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

Parse json with special attribute in javascript

本文关键字:属性 json javascript      更新时间:2024-04-11

>我有一个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("中的字符。

属性可以将任何字符串作为名称,如果字符串与上述说明不匹配,则只能使用括号表示法访问该属性。如果字符串确实与描述匹配,则括号表示法和点表示法可以互换使用,尽管通常首选点表示法,因为它不那么详细。