【问题标题】:Parse json with special attribute in javascript在javascript中解析具有特殊属性的json
【发布时间】:2013-12-06 09:06:37
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery json parsing


    【解决方案1】:

    有两种方法可以访问对象的属性:

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

    属性可以有任何字符串作为名称,并且在字符串与上述描述不匹配的情况下,可以使用方括号表示法访问该属性。如果字符串确实与描述匹配,则括号表示法和点表示法可以互换使用,但通常点表示法是首选,因为它不太冗长。

    【讨论】:

    • 我是您链接到的答案的作者 :) 这是我的另一个答案,它特别阐明了属性名称并链接到一个有用的工具:stackoverflow.com/a/9568622/96656
    猜你喜欢
    • 1970-01-01
    • 2019-07-13
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多