我使用JSON Path parser来解析一些数据。以下是源数据的示例:
{
"people": [
{
"initials": "RF",
"sport": "T"
},
{
"initials": "LM",
"sport": "F"
}
],
"definitions": {
"RF": {
"def_1": "Roger Federer",
"def_2": "Roger"
},
"LM": {
"def_1": "Lionel Messi",
"def_2": "Lionel"
},
"T": {
"def_1": "Tennis"
},
"F": {
"def_1": "Football"
}
}
}
现在,如果我只使用数组(people
),它几乎无用,RF
和T
并不意味着什么。但是,在对象(definitions
)中定义它们。 RF
表示Roger Federer
,T
表示Tennis
,因此我还需要导入这两个。我可以轻松导入RF
和T
,但我很难找到将RF
和T
连接到Roger Federer
和{{1}的查询}}
首先,我需要指定上下文(root),然后指定对象的名称。这是一个例子:
Tennis
当我在节点中导入所有这些时,此示例适用于导入数组(Context: $.[]
Query: initials
Result is: RF
)数据。
这是我现在可以成功导入的内容:
people
我需要什么:
Field1 value: RF
Field2 value: T
基本上,我想更好地描述我从Field1 value: RF
Field2 value: T
**Field4 value: Roger Federer**
**Field5 value: Tennis**
数组获得的内容。这是我尝试过的组合之一,但它不起作用:
people
有没有办法实现这个目标?
答案 0 :(得分:1)
var data = {
"people": [
{
"initials": "RF",
"sport": "T"
}, {
"initials": "LM",
"sport": "F"
}
],
"definitions": {
"RF": {
"def_1": "Roger Federer",
"def_2": "Roger"
},
"LM": {
"def_1": "Lionel Messi",
"def_2": "Lionel"
},
"T": {
"def_1": "Tennis"
},
"F": {
"def_1": "Football"
}
}
};
data.people.forEach( function( person ) {
var name = data.definitions[person.initials].def_1;
var sport = data.definitions[person.sport].def_1;
console.log( name, 'plays', sport );
});
日志:
Roger Federer plays Tennis
Lionel Messi plays Football