Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将嵌套对象数组转换为缓冲区节点_Javascript_Node.js_Object_Rabbitmq_Buffer - Fatal编程技术网

Javascript 将嵌套对象数组转换为缓冲区节点

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消息还有一个有效负

1) 为什么??我需要将缓冲区传递给rabbitMQ,发布方法
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);