我正在从客户端向服务器端发送右键单击坐标,然后从那里将它们写在json文件中,将不同点的坐标存储为不同的对象。这就是我的json文件的外观:
{"x":344,"y":158}{"x":367,"y":152}{"x":641,"y":129}
现在问题是我必须在前两个对象之间加一个逗号才能使它成为有效的json。我怎样才能做到这一点?这是我的请求处理函数:
.post(function(request, response){
console.log("Request received");
var util = require('util');
var coordinates = request.body;
var imageCoordinates = JSON.stringify(coordinates, null, 2);
fs.appendFile('coords.json', imageCoordinates, finished);
function finished(err){
console.log('all set.');
response.send("All OK");
}
console.log('coords are:', coordinates);
});
答案 0 :(得分:0)
好的,一个想法。
如果你改变你的appendFile也要在每次追加后添加一个换行符...这样不仅可以让你在打开它时更容易阅读,它也会更容易解析。
例如.. fs.appendFile('coords.json', imageCoordinates + '\r\n', finished);
因为我们无法在浏览器中运行节点,所以在下面的代码中,假设行是在带有换行符的上述mod之后从文件中读取的数据。
我基本上通过分割和重新加入逗号生成一些有效的JSON,然后在数组中包装。
PS。 filter(String)
只是为了过滤掉最后一个数组元素,因为最后一个逗号都是空白的。
let lines = '{"x":344,"y":158}\r\n{"x":367,"y":152}\r\n{"x":641,"y":129}\r\n';
var data = JSON.parse('[' + (lines.split('\r\n').filter(String)).join(',') + ']');
console.log(data);