在 javascript 中使用特殊属性解析 json
Parse json with special attribute in javascript
>我有一个json如下
"facet_counts": {
"facet_pivot": {
"title,host,content,anchor,id": [
{
"field": "title",
"value": "biglobe",
"count": 192
}
]
}}
照常,我会像这样解析它:
var json = JSON.parse(xhr.responseText);
var field = json.facet_counts.facet_pivot.title,host,content,anchor,id[0].field;
但这是错误的。
你能告诉我如何解析属性"标题,主机,内容,锚点,id"吗?
有两种方法可以访问对象的属性:
-
obj.prop
- 点表示法 -
obj['prop']
- 括号表示法
当 JS 解释器被属性名称的某些部分混淆时(在您的情况下,
(,您可以使用括号表示法来访问该属性:
var json = JSON.parse(xhr.responseText);
var field = json.facet_counts.facet_pivot['title,host,content,anchor,id'][0].field;
这个答案很好地总结了标识符命名限制:
标识符必须以
$
、_
或 Unicode 类别"大写字母 (Lu("、"小写字母 (Ll("、"标题大小写字母 (Lt("、"修饰符字母 (Lm("、"其他字母 (Lo("或"字母编号 (Nl("中的任何字符开头。字符串的其余部分可以包含相同的字符,以及任何 U+200C 零宽度非连接器字符、U+200D 零宽度连接器字符以及 Unicode 类别"非间距标记 (Mn("、"间距组合标记 (Mc("、"十进制数字 (Nd("或"连接器标点符号 (Pc("中的字符。
属性可以将任何字符串作为名称,如果字符串与上述说明不匹配,则只能使用括号表示法访问该属性。如果字符串确实与描述匹配,则括号表示法和点表示法可以互换使用,尽管通常首选点表示法,因为它不那么详细。
相关文章:
- 如何向JSON数组动态添加属性
- 创建新属性后的 JSON 空属性
- 使用XPath样式访问Javascript JSON对象属性
- 在不使用lodash-get的情况下从json中提取深层属性
- json-api和错误结果:无法读取属性'长度'的未定义
- 无法使用ng repeat检索动态创建的JSON对象的属性
- 使用json数据更改视频标签中的src属性
- 只将JSON中的属性加载到现有的javascript对象中,而不破坏方法
- 访问嵌套 json 对象的属性将返回未定义
- JSON.parse:应为''或'}'在对象的属性值之后
- 正在打印JSON属性
- 无法将 json 数据添加到 pyjade 中的数据属性
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串
- 如何将返回一串数字的 JSON 属性转换为日期
- Gmaps4rails:如何向 json 添加属性
- 向 JSON 对象属性添加引号
- 将地理 JSON 要素属性添加到地图框弹出窗口
- 如何在 JSF 中将 JS 函数作为 JSON 属性传递给前端
- 当图像和链接是 json 对象属性的值时,它们不起作用