当前位置: 首页 > 知识库问答 >
问题:

将JSON对象转换为缓冲区,并将缓冲区转换为JSON对象

弓磊
2023-03-14

我有一个JSON对象,我正在将它转换成一个缓冲区,并在这里进行一些处理。稍后,我想将相同的缓冲区数据转换为有效的JSON对象。

我的工作节点V6.9.1

下面是我尝试过的代码,但当我转换回JSON并且无法打开此对象时,我得到了[object object]

var obj = {
   key:'value',
   key:'value',
   key:'value',
   key:'value',
   key:'value'
}

var buf = new Buffer.from(obj.toString());

console.log('Real Buffer ' + buf);  //This prints --> Real Buffer <Buffer 5b 6f 62 6a 65 63 74>

var temp = buf.toString();

console.log('Buffer to String ' + buf);  //This prints --> Buffer to String [object Object]

所以我试着用检查的方式打印整个物体

console.log('Full temp ' + require('util').inspect(buf, { depth: null }));  //This prints --> '[object object]' [not printing the obj like declared above]

如果我试着像数组一样读取它

 console.log(buf[0]);  // This prints --> [ 

我试图解析它也抛出SynTaxError:意外令牌o在JSON在位置2

我需要像我创建的那样将其视为真实对象(我的意思是像上面声明的那样)。

请帮忙。。

共有3个答案

万浩淼
2023-03-14

作为@Ebrahim,您必须首先使用JSON。stringify将JSON转换为字符串,然后可以将其转换为缓冲区。但是使用JSON有点冒险。stringify,因为它可以在自引用或循环引用的情况下中断您的应用程序:

   var y={}
   y.a=y
   JSON.stringify(y) // Uncaught TypeError: Converting circular structure to JSON

如果你有这样的风险,最好使用像这样的安全stringify解决方案npm模块安全-json-stringify

然后你必须做:

// convert to buffer:
const stringify = require('safe-json-stringify');
var buf = Buffer.from(stringify(obj));

// convert from buffer:
var temp = JSON.parse(buf.toString());

杜楚
2023-03-14

请复制以下片段

const jsonObject = {
        "Name":'Ram',
        "Age":'28',
        "Dept":'IT'
      }
      const encodedJsonObject = Buffer.from(JSON.stringify(jsonObject)).toString('base64'); 
      console.log('--encodedJsonObject-->', encodedJsonObject)
      //Output     --encodedJsonObject--> eyJOYW1lIjoiUmFtIiwiQWdlIjoiMjgiLCJEZXB0IjoiSVQifQ==

      const decodedJsonObject = Buffer.from(encodedJsonObject, 'base64').toString('ascii'); 
      console.log('--decodedJsonObject-->', JSON.parse(decodedJsonObject))
      //Output     --decodedJsonObject--> {Name: 'Ram', Age: '28', Dept: 'IT'}
訾高明
2023-03-14

您需要Stringify json,而不是调用toString

var buf = Buffer.from(JSON.stringify(obj));

和转换字符串为json obj:

var temp = JSON.parse(buf.toString());
 类似资料:
  • 在Python脚本中,,我使用协议缓冲区使用以下方法来建模数据: 在. proto文件中定义消息格式。 使用协议缓冲区编译器。 使用Python协议缓冲区API在. py模块中写入和读取消息。 我想在appengine上实现Cloud Endpoints框架,该框架导入,并使用前面提到的Python脚本,但是Cloud Endpoints使用ProtoRPC,而不是“标准”协议缓冲区。 我的App

  • 我有一个node.js readstream,它发出一个缓冲区,并使用toString()函数将缓冲区转换为字符串,之后,当我试图通过JSON.parse()函数将字符串转换为JSON时,它会抛出解析错误。 有没有最好的方法将缓冲区转换为字符串,然后将字符串转换为JSON? JSON字符串如下所示, [{“data1”:1487328824948,“encrypt”:false,“version”

  • 问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答

  • 问题内容: 我对Buffers和ReadableStreams相当陌生,所以也许这是一个愚蠢的问题。我有一个使用a作为输入的库,但是我的输入只是一个base64格式的图像。我可以这样转换数据: 但是我不知道如何将其转换为或将获得的I 转换为。 有办法做到这一点,还是我在努力实现不可能? 谢谢。 问题答案: 您可以使用Node Stream Buffers创建一个ReadableStream,如下所

  • 问题内容: 我想使用node.js进行HTTP请求以从Web服务器加载一些文本。由于响应可能包含很多文本(有些兆字节),因此我想分别处理每个文本块。我可以使用以下代码来实现: 这似乎没有问题。但是我想支持HTTP压缩,所以我使用zlib: 这可以是像多字节字符的问题,其由两个字节组成:和。如果第一个字节被第一个块()覆盖,第二个字节被第二个块覆盖,则将在文本块的结尾/开头产生不正确的字符。如何避免

  • 是否有一个工具或库可以将PROBUFF对象映射到POJO。我想让pojo实现我无法使用PROBUFF对象实现的其他接口。或者我必须手动执行此转换?