如何将队列消息转换为JSON对象?

时间:2019-06-20 20:53:38

标签: javascript json type-conversion rabbitmq queue

我正在Node.js(带有Express)中使用队列来检索缓冲区(带有字节的数组)。此缓冲区包含一个JSON对象(字符串形式)。尝试将字符串转换回JSON时,Javascript不再识别JSON。

我试图将队列消息内容转换为字符串,这行得通。当我尝试使用JSON.parse()将此字符串解析为JSON时,因为缺少引号,它会引发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是缓冲区。

我需要能够读取单个JSON字段,例如Booking.FlightID

澄清;我正在使用JSON数据检索String的缓冲区。我想将其解析回实际的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}

格式不是很漂亮,但现在引号似乎还不错。 这似乎已经解决了问题。

0 个答案:

没有答案