将 JSON 对象转换为 Buffer 并将 Buffer 转换为 JSON 对象

新手上路,请多包涵

我有一个 JSON 对象,我将其转换为 Buffer 并在此处进行一些处理。稍后我想将相同的缓冲区数据转换为有效的 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: Unexpected token o in JSON at position 2

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

请帮忙..

原文由 Prasanth J 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.2k
2 个回答

您需要对 json 进行字符串化,而不是调用 toString

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

并将字符串转换为 json obj :

 var temp = JSON.parse(buf.toString());

原文由 Ebrahim Pasbani 发布,翻译遵循 CC BY-SA 3.0 许可协议

在此处输入图像描述

请复制以下片段

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'}

原文由 Santosh Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题