好的,
我修改问题。
如何在 NODEJS JavaScript 中浏览这个 JSON:
{
"subscriptionId" : "5a268a598dc68904bbc7b3cf",
"originator" : "localhost",
"contextResponses" : [
{
"contextElement" : {
"type" : "Temperatura",
"isPattern" : "false",
"id" : "S_Temp001",
"attributes" : [
{
"name" : "Tem_int",
"type" : "float",
"value" : 2,
"metadatas" : [
{
"name" : "accuracy",
"type" : "Float",
"value": 2 }
]
},
{
"name" : "Tem_out",
"type" : "Integer",
"value" : 1
}
]
},
"statusCode" : {
"code" : "200",
"reasonPhrase" : "OK"
}
}
]
}
问候和谢谢。
EDIT01
现在我的答案是:
[ [ 'S_Temp001', 'Temperatura', 'Tem_int', 'float', 2, 'accuracy', 'Float',2 ] ]
我以这种方式将它保存在数据库中(它工作正常):
var sql = "INSERT INTO inver (fiwareServicePath, entityId, entityType, attrName, attrType, attrValue) VALUES ?";
connection.query(sql, [tmp], function(err, rows) {
if(err)
{
throw err;
console.log('Error al Conectar' + error);
}
else
{
res.status(200).json(rows);
}
});
现在我的问题:我只保存属于attributes[0]
我需要生成另一个由 分隔的数组,并在同一个 tmp 数组中插入 [] 内,也就是说:
var tmp= [['S_Temp001', 'Temperatura', 'Tem_int', 'float', 2, 'accuracy',
'Float',2],['S_Temp001', 'Temperatura', 'Tem_out', 'Integer', 1, 'accuracy',
'Float',2]];
对于我在您提供的代码中添加的元数据:
json["contextResponses"][i].contextElement.attributes[0].metadatas[0].name,
json["contextResponses"][i].contextElement.attributes[0].metadatas[0].type,
json["contextResponses"][i].contextElement.attributes[0].metadatas[0].value]);
我需要像这样在我的数据库中插入这个列表,并将每个数组插入一个新行中,所以我给你的例子看起来像:
我想我必须在其中生成一个新的 for ,for (var i = 0; i < json["contextResponses"].length; i++)
以便它遍历属性并将它们添加为具有我之前提到的结构的新数组。
var tmp= [['S_Temp001', 'Temperatura', 'Tem_int', 'float', 2, 'accuracy',
'Float',2],['S_Temp001', 'Temperatura', 'Tem_out', 'Integer', 1, 'accuracy',
'Float',2]];
不知道我解释的好不好。
谢谢你。
EDIT02 解决方案
好的,
我已经找到了解决方案,我添加它以防它对某人有用。
var tmp2 = [];
for (var i = 0; i < params.contextResponses.length; i++) {
for (var j = 0; j < params.contextResponses[i].contextElement.attributes.length; j++) {
for (var k = 0; k < params.contextResponses[i].contextElement.attributes[j].metadatas.length; k++) {
console.log("nuevo log antes de petar: " + params["contextResponses"][i].contextElement.attributes[j].metadatas[k].value);
tmp2.push([params.contextResponses[i].contextElement.id,
params.contextResponses[i].contextElement.type,
params.contextResponses[i].contextElement.attributes[j].name,
params.contextResponses[i].contextElement.attributes[j].type,
params.contextResponses[i].contextElement.attributes[j].value,
params.contextResponses[i].contextElement.attributes[j].metadatas[k].name,
params.contextResponses[i].contextElement.attributes[j].metadatas[k].type,
params.contextResponses[i].contextElement.attributes[j].metadatas[k].value]);
console.log("tmp2 --> ",tmp2);
}
}
}
问候并感谢您的帮助。
修改 JSON 或多或少地考虑您需要查看它的内容,并在最后添加一个 for ,其中 DATA 保持您需要的格式(如果我不这样做,您可以自己制定一种方法)不知道你需要什么)。即便如此,让我知道这是否不是您需要的,是否可以给我更多细节以给出更准确的答案。
我希望如果你仍然无法解决它,我希望这对你有帮助,或者如果你有更简单的方法来做我要求的事情,分享:)
PS:如果你需要,它只是遍历整个对象更多的事情,让我知道。
PS:抱歉耽搁了,我没有太多时间,更新让我的笔记一团糟xD。
如果您只需要某些 json 值,则可以使用解构,这是我的意思的一个示例:
有关该主题的更多信息 => https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operator/Destructuring_assignment