将 JSON 对象转换为 Buffer 并将 Buffer 转换为 JSON 对象
Convert a JSON Object to Buffer and Buffer to JSON Object back
我有一个 JSON 对象,我正在将它转换为 Buffer
并在这里做一些处理。稍后我想将相同的缓冲区数据转换为有效的 JSON 对象。
我正在使用 Node 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
我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。
请帮忙..
您需要对 json 进行字符串化,而不是调用 toString
var buf = Buffer.from(JSON.stringify(obj));
并将字符串转换为 json obj :
var temp = JSON.parse(buf.toString());
作为@Ebrahim,您必须先使用JSON.stringify
将JSON 转换为字符串,然后才能将其转换为Buffer。但是使用 JSON.stringify
有点冒险,因为它可能会在自引用或循环引用的情况下破坏您的应用程序:
var y={}
y.a=y
JSON.stringify(y) // Uncaught TypeError: Converting circular structure to JSON
如果你有这样的风险,最好使用像 npm 模块这样的安全字符串化解决方案 safe-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());
请复制以下片段
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'}
我有一个 JSON 对象,我正在将它转换为 Buffer
并在这里做一些处理。稍后我想将相同的缓冲区数据转换为有效的 JSON 对象。
我正在使用 Node 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
我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。
请帮忙..
您需要对 json 进行字符串化,而不是调用 toString
var buf = Buffer.from(JSON.stringify(obj));
并将字符串转换为 json obj :
var temp = JSON.parse(buf.toString());
作为@Ebrahim,您必须先使用JSON.stringify
将JSON 转换为字符串,然后才能将其转换为Buffer。但是使用 JSON.stringify
有点冒险,因为它可能会在自引用或循环引用的情况下破坏您的应用程序:
var y={}
y.a=y
JSON.stringify(y) // Uncaught TypeError: Converting circular structure to JSON
如果你有这样的风险,最好使用像 npm 模块这样的安全字符串化解决方案 safe-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());
请复制以下片段
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'}