我正在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}
格式不是很漂亮,但现在引号似乎还不错。 这似乎已经解决了问题。