在javascript中使用特殊属性解析json

时间:2013-12-06 09:06:38

标签: javascript jquery json parsing

我有一个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”

1 个答案:

答案 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)”中。

属性可以包含任何字符串作为名称,如果字符串与上述描述不匹配,则可以使用括号表示法访问属性。如果字符串与描述匹配,括号表示法和点表示法可以互换使用,但通常点符号是首选,因为它更简洁。