Javascript 将嵌套对象数组转换为缓冲区节点
1) 为什么??我需要将缓冲区传递给rabbitMQ,发布方法Javascript 将嵌套对象数组转换为缓冲区节点,javascript,node.js,object,rabbitmq,buffer,Javascript,Node.js,Object,Rabbitmq,Buffer,1) 为什么??我需要将缓冲区传递给rabbitMQ,发布方法 2) 我的数据如下所示 [ // array of objects { id: 1, name: 'John Doe', prop: { a: [....], // nested b: [....], c: {...} } }, ... ] 如何正确地将这样的对象数组转换为缓冲区,以便从另一端可以解析回来 1) 为什么? 从 AMQP消息还有一个有效负
2) 我的数据如下所示
[ // array of objects
{
id: 1,
name: 'John Doe',
prop: {
a: [....], // nested
b: [....],
c: {...}
}
},
...
]
如何正确地将这样的对象数组转换为缓冲区,以便从另一端可以解析回来
1) 为什么?
从
AMQP消息还有一个有效负载(它们携带的数据),AMQP代理将其视为不透明字节数组。代理不会检查或修改有效负载。消息可能只包含属性而不包含有效负载。通常使用JSON、Thrift、Protocol Buffers和MessagePack等序列化格式对结构化数据进行序列化,以便将其发布为消息负载。AMQP对等方通常使用“内容类型”和“内容编码”字段来传递此信息,但这只是按照惯例
TL;这种情况的DR版本是RabbitMQ对您的数据或其格式化/编码方式一无所知。它将消息视为字节数组,要求您处理编码
amqp.node
库希望您传递一个缓冲区,因为这是node.js处理与字节数组之间的转换的最简单方法,就像RabbitMQ所期望的那样
如何正确地将这样的对象数组转换为缓冲区,以便从另一端可以解析回来
在消息生成器中,您需要将消息数据转换为JSON字符串(文档),然后再将其转换为JSON字符串
var data = [ ... ];
var json = JSON.stringify(data);
var buffer = Buffer.from(json);
在消息使用者端,您可以使用消息正文
,首先执行相反的操作
此时,您的data
对象应该是您想要的数据数组,以便Node.js代码使用。Buffer.from(JSON.stringify(thing))
??
var json = message.body.toString();
var data = JSON.parse(json);