Javascript 访问Node.js中Json对象上的字段
所以我是JavaScript编程新手。我在POST请求中获得此JSON负载:Javascript 访问Node.js中Json对象上的字段,javascript,json,Javascript,Json,所以我是JavaScript编程新手。我在POST请求中获得此JSON负载: { "subscriptionId" : "asdasdasdasd", "originator" : "localhost", "contextResponses" : [ { "contextElement" : { "type" : "", "isPattern" : "false", "id" : "id", "at
{
"subscriptionId" : "asdasdasdasd",
"originator" : "localhost",
"contextResponses" : [
{
"contextElement" : {
"type" : "",
"isPattern" : "false",
"id" : "id",
"attributes" : [
{
"name" : "temperature",
"type" : "int",
"value" : "5"
}
]
},
"statusCode" : {
"code" : "200",
"reasonPhrase" : "OK"
}
}
]
}
并使用此代码尝试访问某个字段:
var qs = require('querystring');
var http = require('http');
http.createServer(function (req, res) {
var obj;
if (req.method == 'POST') {
var body = '';
req.on('data', function (data) {
body += data;
console.log(body.attributes.value);
if (body.length > 1e6)
req.connection.destroy();
});
req.on('end', function () {
var post = qs.parse(body);
// use post['blah'], etc.
});
}
}).listen(8087, "188.???.??.???");
console.log('Server running at http://188.???.??.???:8087/');
如您所见,我正在尝试访问value字段并尝试检索数字5。显然,它不起作用。我试着用谷歌搜索,这可能真的很愚蠢。关于如何进入该领域有什么建议吗
编辑:
来自console.log(正文)的数据:
console.log(数据):
由于http模块以字符串形式返回
数据
,因此需要首先将接收到的数据解析为JSON对象:
而不是:
req.on('data', function (data) {
body += data;
console.log(body.attributes.value);
....
});
这样做:
req.on('data', function (data) {
var recv = JSON.parse(data);
console.log(recv.contextResponses[0].contextElement.attributes[0].value);
....
});
如果从服务器收到的响应数据与第一段中发布的数据相同,则可以通过
.contextResponses[0].contextElement.attributes[0]访问该值.value
在顶层没有名为attributes的属性,通过向数据添加´´´,您正在将其转换为字符串,您建议怎么做?我使用了这个答案的代码:我建议你不要将它转换为字符串,然后再将payattunon转换为属性调用的值,从顶层转换为你需要的值。谢谢你的快速回答。我尝试了该代码,但它给了我:TypeError:无法读取未定义的属性“value”::这是一个打字错误,我现在已经更新了答案。请看,再次感谢!但是现在它得到了:TypeError:无法读取未定义的属性“0”。我认为您发布的数据可能不是实际的响应。你能用控制台日志(数据)更新你的问题吗?答案更新!我用身体代替数据,但它仍然给我那个错误!
{ subscriptionId: '55817b3b98add18cc3e183be',
originator: 'localhost',
contextResponses: [ { contextElement: [Object], statusCode: [Object] } ] }
req.on('data', function (data) {
body += data;
console.log(body.attributes.value);
....
});
req.on('data', function (data) {
var recv = JSON.parse(data);
console.log(recv.contextResponses[0].contextElement.attributes[0].value);
....
});