Как я могу преобразовать сообщение очереди в объект JSON? - PullRequest
0 голосов
/ 20 июня 2019

Я использую очередь в 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}

Форматирование не очень красивое, но кавычки сейчас в порядке.Похоже, это решило проблему.

...