Node.js 如何从POST请求中获得干净的响应并将其保存在json文件中
我有以下代码用于nodejs和hapi框架的POST请求:Node.js 如何从POST请求中获得干净的响应并将其保存在json文件中,node.js,json,Node.js,Json,我有以下代码用于nodejs和hapi框架的POST请求: server.route({ method: "POST", path: "/newdata", config: { validate: { query: Joi.object({ alert: Joi.boolean().default(true)
server.route({
method: "POST",
path: "/newdata",
config: {
validate: {
query: Joi.object({
alert: Joi.boolean().default(true)
})
}
},
handler: (request, h) => {
fs.readFile('./data.json', (err, data) => {
if (err) {
console.log(`Error reading file: ${err}`);
} else {
const object = JSON.parse(data);
object.push(JSON.stringify(request.payload));
console.log(object)
fs.writeFileSync('./data.json', JSON.stringify(object, null, 4), (err) => {
if (err) {
console.log(`Error writing file: ${err}`);
}
});
}
});
return request.payload;
}
});
get的响应如下所示:“{\'name\”:“Johny Crumpy\”,“corp\”:“USA\”}”。我如何将其保存在json文件中,而不在任何地方都使用“”。在json文件中,它应该如下所示:{
“姓名”:“史蒂夫·鲍尔默”,
“公司”:“微软”
},您得到这些额外的引号是因为您做了两次
JSON.strigify
。试试这个
handler: (request, h) => {
fs.readFile('./data.json', (err, data) => {
if (err) {
console.log(`Error reading file: ${err}`);
} else {
const object = JSON.parse(data);
object.push(request.payload);
console.log(object)
fs.writeFileSync('./data.json', JSON.stringify(object, null, 4), (err) => {
if (err) {
console.log(`Error writing file: ${err}`);
}
});
}
});
return request.payload;
}
您正在进行两次字符串化…所以最终(部分)数据被双重编码。尝试更改
object.push(JSON.stringify(request.payload))代码>到对象.push(请求.payload)
会不会将[object object]
写入文件?你说得对,应该只有一个JSON.stringify
,但那应该在object.push
行中…哦,是的,谢谢,让我来解决这个问题。工作顺利,谢谢