La nomenclature n'est pas supprimée du corps de la réponse lorsque le corps est rempli avec le tampon
request({
url: url,
json: true,
strictSSL: false,
}, (error, response, data) => {
if (error) {
throw error;
}
if (response.statusCode === 200) {
// data is string instead of json deserialized object
}
})
BOM char dépouillé et réponse json désérialisée
JSON.parse échoue et une chaîne est renvoyée
if (bufferLength) {
debug('has body', self.uri.href, bufferLength)
response.body = Buffer.concat(buffers, bufferLength)
if (self.encoding !== null) {
response.body = response.body.toString(self.encoding)
}
// `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request.
// This can lead to leaky behavior if the user retains a reference to the request object.
buffers = []
bufferLength = 0
} else if (strings.length) {
// The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.
// Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().
if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') {
strings[0] = strings[0].substring(1)
}
response.body = strings.join('')
}
Comme nous pouvons le voir, le caractère BOM est supprimé lorsque des chaînes sont utilisées à la place du tampon
Extrayez le code en dehors de else if (strings.length) pour toujours nettoyer le corps de la réponse.
Lecture de la réponse json d'un fanfaron personnalisé de l'entreprise basé sur le cape et l'épée
| logiciel | version
| ---------------- | -------
| demande | 2.83.0
| nœud | 9.3.0
| npm | 5.5.1
| Système d'exploitation | Windows 10
Si nous définissons l'encodage : 'utf8' dans les options de la requête, la réponse est analysée
Ce problème a été automatiquement marqué comme obsolète car il n'a pas eu d'activité récente. Il sera fermé si aucune autre activité ne se produit. Merci pour vos contributions.
Je vois aussi ce problème - merci d'avoir publié la solution de contournement - ce serait bien si la bibliothèque s'occupait de cela.
Commentaire le plus utile
Si nous définissons l'encodage : 'utf8' dans les options de la requête, la réponse est analysée