我有一个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;
但这是错误的。
你能告诉我如何解析属性“title,host,content,anchor,id”
答案 0 :(得分:6)
有两种方法可以访问对象的属性:
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;
This answer总结了标识符命名限制:
标识符必须以
$
,_
或Unicode类别“Uppercase letter (Lu)”,“Lowercase letter (Ll)”,“Titlecase letter (Lt)”,“Modifier letter (Lm)”中的任何字符开头,“Other letter (Lo)”或“Letter number (Nl)”。字符串的其余部分可以包含相同的字符,以及任何 U + 200C零宽度非连接符字符, U + 200D零宽度连接符字符和字符在Unicode类别“Non-spacing mark (Mn)”,“Spacing combining mark (Mc)”,“Decimal digit number (Nd)”或“Connector punctuation (Pc)”中。
属性可以包含任何字符串作为名称,如果字符串与上述描述不匹配,则可以使用括号表示法访问仅属性。如果字符串与描述匹配,括号表示法和点表示法可以互换使用,但通常点符号是首选,因为它更简洁。