我正在尝试解析我的node.js服务器上传入的JSON对象,但是它一直说它未定义?这是我的代码:
app.get("/adddates", function (req, res) {
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
console.log("does this get called?"); //Response 1 here is correct
console.log(query); //Response here 2*
console.log(query['name']); // Response 3 here is undefined?
if(query["Name"]!==undefined) {
var tx = { Name : query["Name"],
Description: query["Description"],
Date: query["Date"],
People: query["people"],
Tag: query["Tag"]
};
console.log(tx);
todos.push(tx);
console.log("Added " + tx.message);
res.end("Todo added successfully");
}
else {
res.end("Error: missing message parameter");
}
});
2* = { '[{"Name":"testetst","Description":"Blasts","Date":"2016-12-08","People":["Sjaak"],"Tag":"': '' }
所以我的问题是,为什么响应3未定义以及如何解决它呢?
为什么Tag值为空?输入是十六进制颜色?它只是一个JSON解析我做错了吗?
非常感谢提前
答案 0 :(得分:0)
如果查看url.parse
文档,您会看到:
NSTextView
所以json中的┌─────────────────────────────────────────────────────────────────────────────┐
│ href │
├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤
│ protocol ││ auth │ host │ path │ hash │
│ ││ ├──────────┬──────┼──────────┬────────────────┤ │
│ ││ │ hostname │ port │ pathname │ search │ │
│ ││ │ │ │ ├─┬──────────────┤ │
│ ││ │ │ │ │ │ query │ │
" http: // user:pass @ host.com : 8080 /p/a/t/h ? query=string #hash "
│ ││ │ │ │ │ │ │ │
└──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘
(all spaces in the "" line should be ignored -- they are purely for formatting)
将在发送后成为哈希。要解决这个问题,您发送的数据应该是url编码的。这可以通过encodeURIComponent(URI)
完成。
tag
修改强>
如果您查看query
部分,您会看到它会解析$.get( "localhost:3000/adddates", encodeURIComponent(dateobj) );
之类的数据。所以将查询部分添加到url字符串:
query=string
然后你应该能够检索像
这样的数据$.get( "localhost:3000/adddates", "data=" + encodeURIComponent(dateobj) );
原始回答
假设json是
var json = query["data"];
var data = JSON.parse(json);
var name = data[0]["Name"]
有不同的sites,您可以在其中验证您的json是否正确。
然后查询是由[{"Name":"testetst","Description":"Blasts","Date":"2016-12-08","People":["Sjaak"],"Tag":""}]
和[
指示的对象数组。要访问对象本身,您首先需要从数组中获取它们,然后您才能访问这些属性。
]