BOM tidak dilucuti dari badan respons saat badan diisi dengan buffer
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 dilucuti dan respons json di-deserialized
JSON.parse gagal dan string dikembalikan
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('')
}
Seperti yang kita lihat, karakter BOM dilucuti ketika string digunakan sebagai pengganti buffer
Ekstrak kode di luar else if (strings.length) untuk selalu membersihkan badan respons.
Membaca respons json dari kesombongan kustom perusahaan berdasarkan swashbuckle
| perangkat lunak | Versi: kapan
| ---------------- | -------
| permintaan | 2.83.0
| simpul | 9.3.0
| npm | 5.5.1
| Sistem Operasi | Windows 10
Jika kita menyetel penyandian: 'utf8' dalam opsi permintaan, responsnya diuraikan
Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.
Saya juga melihat masalah ini - terima kasih telah memposting solusinya - akan lebih baik jika perpustakaan menangani ini.
Komentar yang paling membantu
Jika kita menyetel penyandian: 'utf8' dalam opsi permintaan, responsnya diuraikan