javascript或json表达式来解析json以获得某个值
javascript or json expression to parse json to get a certain value
我需要能够解析这个json数组/对象,以查找元素与值匹配的值。例如,我想得到$的值,其中@name=nameGreen。
{
"startNode": {
"result": {
"node1": {
"$": "A_Value"
},
"attribute-value": [
{
"@name": "nameRed",
"$": "attribute1"
},
{
"@name": "nameBlue",
"$": "attribute2"
},
{
"@name": "nameGreen",
"$": "attribute3"
},
{
"@name": "nameYellow",
"$": "attribute4"
}
]
}
}
}
获取node1的值很容易console.log(['startNode'].result.node1['$']);
将获取A_value的值。
我只是在写逻辑方面有问题,1.当@name=nameGreen时,2.然后获得$的值
注意:这个json节点是动态的,所以@name和$值总是会改变。
真的很感谢你的帮助。
您需要循环遍历实际值来检查它们。例如,
var attrs = ['startNode'].result.['attribute-value']
for (var i = 0; i < attrs.length; i++) {
if (attrs[i]['@name'] == 'nameGreen') ...
}
(显然,你可以写一些更好的代码来做到这一点。)
我建议您寻找一些库来帮助您以更好的方式提取这些数据,因为它看起来像是在解析XML。
JSBin示例
这里有一种方法,通过数组的"属性值"循环:
var a = d.startNode.result["attribute-value"];
for (var i = 0; i < a.length; i++) {
if (a[i]['@name'] === 'nameRed') {
console.log(a[i].$);
}
}
需要注意的事项:
如果变量中有"-",请尝试使用括号表示法,而不是点表示法。
与
@
等奇数字符相同然而,当使用
$
时,这不是必需的,正如您从上面的代码中看到的那样
所需的通用功能(ES6)
const getThing = (arr, key, test, match) => (
arr.filter(el => (el[key] === test))[0][match]
);
var arr = obj.startNode.result['attribute-value'];
var out = getThing(arr, '@name', 'nameGreen', '$');
演示
或者在更详细的ES5:中也是如此
function getThing(arr, key, test, match) {
return arr.filter(function (el) {
return el[key] === test;
})[0][match];
};
演示
在ES6中,您还可以使用数组对象的find
方法或其polyfill来定位"属性值"对象,然后再读取其$
属性:
var nodes = { ..... }; // the posted object.
var findObj = ( arrayOfObj, propName, propVal) =>
arrayOfObj.find( (obj) => obj[ propName] === propVal );
var atr = findObj( nodes.startNode.result["attribute-value"], "@name", "nameGreen");
console.log( atr ? "$ for namegreen: " + atr.$ : "not found")
其中,findObj
是用于在arrayOfObj
中搜索具有值为propVal
的属性propName
的对象的函数,并且提供给find
的箭头函数返回用于匹配的true
或false
。
相关文章:
- 读取角度表达式json数据中的br或pre或html标记
- 将电子邮件验证正则表达式字符串存储在JSON中
- 如何使用 JSON 解析正则表达式文本
- javascript或json表达式来解析json以获得某个值
- 在JSON中指定正则表达式字符串,在JavaScript和PHP中使用
- 如何从json中检索angularjs表达式的数据
- 使用正则表达式循环 Json 数据
- JavaScript 使用基于 json 数组的正则表达式替换字符串
- Angular JSON - 使用“跟踪依据”表达式
- 如何将特殊的 Mongo 表达式添加到 JSON 对象
- 在节点和表达式中循环遍历 JSON
- 如何使用嵌套表达式查找 JSON 对象
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- 如何创建正则表达式 查找 JS 文件(或 JSON)中的所有字符串
- 用于修复无效 JSON 的正则表达式
- 如何在 javascript 中使用正则表达式检查空的 json 响应
- 使用正则表达式转换 JSON 密钥值
- 如何使用正则表达式和“”字符正确解析 JSON
- 如何使这个json正则表达式贪婪
- 如何强制从JSON传递的表达式进入Angular范围