我有一个非常大的数据集,可能包含数千个记录层次结构
records
->record1
->main_record
->minor_record
->fields
->record2
->main_record
->data_records
->fields_records
->fields
根据输入文件,这个层次结构可以更加休息,它可能包含数百个像record1
record2
这样的记录,这里有一件事我必须提到数据没有按级别排序。
现在假设我想在fields
中找到fields_record
而不是XPath
record2/main_record/data_records/fields_records/fields
找到的一种方法是循环整个数据集并找到不合理的所需记录,我用于搜索数据的方式是:
function main() {
var dataset = getDataFromService();
getResult(dataset, xpath);
}
function getdataset(dataset, nametosearch) {
for (var i = 0; i < dataset.length; i++) {
if (dataset[i].name == nametosearch) {
return dataset[i];
}
}
}
function getResult(dataset, xpath) {
if (xpath.indexOf('/') > -1) {
var splitArray[] = xpath.split("/");
for (var i = 0; i < splitArray.length; i++) {
dataset = getdataset(dataset, splitArray[i]);
}
return dataset;
} else {
getdataset(dataset, xpath); //else part to get records at root level
}
}
使用上面提到的代码我可以获得我想知道的数据这种方式有效吗?如果不是什么是使用XPath获取数据的更好选择?
答案 0 :(得分:1)
Eaxmple:
JSON:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
路径:$ PHONENUMBERS [1] .TYPE
结果:&#34; iPhone&#34;