Javascript 如何查询json文件? 这是我想要解析的文件 我从一个Web服务接收一个JSON格式的文件 我想以这样一种方式解析内容,即显示来自美国的总统的姓名 预期产出 您能提供一种使用JSON XPath的解决方案吗?
假设您正在将响应加载到变量数据中:Javascript 如何查询json文件? 这是我想要解析的文件 我从一个Web服务接收一个JSON格式的文件 我想以这样一种方式解析内容,即显示来自美国的总统的姓名 预期产出 您能提供一种使用JSON XPath的解决方案吗?,javascript,json,xpath,typescript,jsonpath,Javascript,Json,Xpath,Typescript,Jsonpath,假设您正在将响应加载到变量数据中: var data = { "response" : { "result" : { "Countries" : { "row" : [{ "no" : "1", "FL" : [{ "content" : "USA",
var data = {
"response" : {
"result" : {
"Countries" : {
"row" : [{
"no" : "1",
"FL" : [{
"content" : "USA",
"val" : "Country"
}, {
"content" : "Barack Obama",
"val" : "President"
}
]
}, {
"no" : "2",
"FL" : [{
"content" : "Cuba",
"val" : "Country"
}, {
"content" : "Raul Castro",
"val" : "President"
}
]
}
]
}
}
}
};
然后,您可以按如下方式筛选数据:
data.response.result.Countries.row.filter(function (el) {
return (el.FL[0].content == "USA");
})[0].FL[1];
function find(query,obj) {
var str = JSON.stringify(obj);
var start = str.substr(0,str.indexOf(query)).lastIndexOf('{');
var end = str.substr(start,str.length).indexOf('}');
return str.substr(start,end);
}
console.log(find('"content":"USA"',data))
要到达:
{
"content" : "Barack Obama",
"val" : "President"
}
要获取名称,只需指定“内容”
编辑1
可以像搜索字符串一样搜索json对象
如果我们知道元素将没有子元素,那么我们可以使用如下内容:
data.response.result.Countries.row.filter(function (el) {
return (el.FL[0].content == "USA");
})[0].FL[1];
function find(query,obj) {
var str = JSON.stringify(obj);
var start = str.substr(0,str.indexOf(query)).lastIndexOf('{');
var end = str.substr(start,str.length).indexOf('}');
return str.substr(start,end);
}
console.log(find('"content":"USA"',data))
尽管这个问题已经过时了,我还是想补充这个答案,作为未来有同样问题的游客的参考:
你可以用。该页面包含JavaScript和PHP的描述和实现。hi@almasK89,感谢您的回答,您知道使用JSON XPath的答案吗?您的解决方案当然是正确的,我希望找到一个更通用的解决方案,以防将来json的数据模型发生变化。谢谢找到了这个解决方案hi@emil-s-jørgensen,谢谢你的回答,你知道使用JSON XPath的答案吗?您的解决方案当然是正确的,我希望找到一个更通用的解决方案,以防将来json的数据模型发生变化。谢谢您同意命令行解决方案吗?您可以使用jq命令行工具查询json文件。类似问题:
function find(query,obj) {
var str = JSON.stringify(obj);
var start = str.substr(0,str.indexOf(query)).lastIndexOf('{');
var end = str.substr(start,str.length).indexOf('}');
return str.substr(start,end);
}
console.log(find('"content":"USA"',data))
t = {
"response": {
"result": {
"Countries": {
"row": [
{
"no": "1",
"FL": [
{
"content": "USA",
"val": "Country"
},
{
"content": "Barack Obama",
"val": "President"
}
]
},
{
"no": "2",
"FL": [
{
"content": "Cuba",
"val": "Country"
},
{
"content": "Raul Castro",
"val": "President"
}
]
}
]
}
}
}
}
res={};//Here we will store result
for (i in t.response.result.Countries.row) {
// get current country
country = t.response.result.Countries.row[i].FL[0].content;
// get current president
president = t.response.result.Countries.row[i].FL[1].content;
if (country == 'USA') {
res.presidents=[{name:president}];
break;
}
}