Я использую очередь в Node.js (с Express) для получения буфера (массив с байтами).Этот буфер содержит объект JSON (в виде строки).При попытке преобразовать строку обратно в JSON Javascript больше не распознает JSON.
Я пытался преобразовать содержимое сообщения очереди в строку, это работает.Когда я пытаюсь проанализировать эту строку в JSON, используя JSON.parse()
, он выдает ошибку SyntaxError, потому что отсутствуют кавычки.Когда я впервые использую JSON.Stringify (), а затем использую JSON.Parse (), это похоже на работу, но когда я пытаюсь отобразить поле JSON (например, booking.FlightID), он возвращает «неопределенное».
Вот как выглядит анализируемый JSON:
{ _id: 5d0bf0a7086a1a239cd9842d,
Passenger:
[ { _id: 5d0bf0a7086a1a239cd9842f,
FirstName: 'Alice',
LastName: 'Black',
Age: '19',
Gender: 'Male',
BaggageKG: 20 },
{ _id: 5d0bf0a7086a1a239cd9842e,
FirstName: 'Dave',
LastName: 'White',
Age: '29',
Gender: 'Female',
BaggageKG: 45 } ],
FlightID: 21,
Email: 'THIS IS A TEST @mail.com',
__v: 0 }
И это мой метод синтаксического анализа:
var booking = JSON.parse(JSON.stringify(msg.content.toString()));
Где msg.content - это буфер.
Iнужно уметь читать отдельные поля JSON, например Booking.FlightID
.
для уточнения;Я получаю буфер строки с данными JSON.Я хочу разобрать его обратно к фактическому JSON.
Это содержимое, которое отправляется в очередь:
var booking = new Booking();
var msg = booking.toString();
(console.log (msg) показывает следующее):
{ _id: 5d0bf3cf870dba3ed8a5808f,
Passenger:
[ { _id: 5d0bf3cf870dba3ed8a58091,
FirstName: 'Alice',
LastName: 'Black',
Age: '19',
Gender: 'Male',
BaggageKG: 20 },
{ _id: 5d0bf3cf870dba3ed8a58090,
FirstName: 'Dave',
LastName: 'White',
Age: '29',
Gender: 'Female',
BaggageKG: 45 } ],
FlightID: 21,
Email: 'THIS IS A TEST @mail.com' }
Я изменил способ добавления сообщения в буфер.Вместо object.toString()
я теперь использую JSON.Stringify(object)
.Теперь, когда я извлекаю и анализирую сообщение из очереди, это содержимое:
{"_id":"5d0bf6b7211c3351fca6e071","Passenger":[{"_id":"5d0bf6b7211c3351fca6e073","FirstName":"Alice","LastName":"Black","Age":"19","Gender":"Male","BaggageKG":20},{"_id":"5d0bf6b7211c3351fca6e072","FirstName":"Dave","LastName":"White","Age":"29","Gender":"Female","BaggageKG":45}],"FlightID":21,"Email":"THIS IS A TEST @mail.com","__v":0}
Форматирование не очень красивое, но кавычки сейчас в порядке.Похоже, это решило проблему.