我有一个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
我需要像我创建的那样将其视为真实对象(我的意思是像上面声明的那样)。
请帮忙。。
作为@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());
请复制以下片段
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'}
您需要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对象实现的其他接口。或者我必须手动执行此转换?