gpt4 book ai didi

json - fs.writeSync 将字符串输出为 int 数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:01 24 4
gpt4 key购买 nike

我使用express router来捕获ajax post数据,这是一个字符串化的JSON对象:

router.all('/ajax/setup/save/asset', function (req, res) {   
console.log('POST: /ajax/setup/save/asset');

var fileName = path.join(jsonFileNamePrefix, jsonFileName_asset);

req.on('data', function(chunk) {
console.log('POST: DATA: ' + chunk);
fd = fs.openSync(fileName, 'w');
console.log('Opened file: ' + fileName);
fs.writeSync(fd, chunk);
console.log('Wrote ' + chunk + ' into file ' + fileName);
fs.closeSync(fd);
console.log('Closed file: ' + fileName);
res.end();
console.log('res.end()');
});
});

然后控制台记录:

POST: /ajax/setup/save/asset
POST: DATA: {"asset":"test"}
Opened file: /srv/data/asset.json
Wrote {"asset":"test"} into file /srv/data/asset.json
Closed file: /srv/data/asset.json
res.end()

但是,该文件实际上是这样写的:

[123,34,97,115,115,101,116,34,58,34,116,101,115,116,34,125]

尝试告诉 fs.writeSync 使用“utf8”、“hex”编码,仍然得到相同的结果。还尝试了 JSON.parse,然后 JSON.stringify 传入的数据 block ,也没有帮助..

最佳答案

代码中的 req 对象实际上是 http.IncomingMessage 流的实例。

当它通过data事件提供信息时,该信息作为缓冲区提供。

此外,并非保证请求的所有数据在第一次调用处理程序时可用。

有多种方法可以将此数据捕获到可用的字符串中。您可以创建一个新字符串并将这些 block 简单地连接在一起

router.all('/ajax/setup/save/asset', function (req, res) {   
var buf = ''

req.on('data', function(chunk){
buf += chunk.toString();
});

req.on('end', function(){
console.log(buf);
});
});

关于json - fs.writeSync 将字符串输出为 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com