【问题标题】:JSON - Access field named '*' asteriskJSON - 名为“*”星号的访问字段
【发布时间】:2011-09-30 12:14:09
【问题描述】:

我正在尝试访问具有键 '*' 的 JSON 字段:

{ 
  "parse": { 
    "text": {
      "*": "text i want to access" 
    }
  }
}

myObject.parse.text.*myObject.parse.text[0] 都不起作用。

我已经搜索了一个小时,但没有发现星号具有特殊含义的任何提示。如果我只是遍历整个树并与if (key == "*") 进行字符串比较,我可以检索文本,但我想直接访问该字段。我该怎么做?

【问题讨论】:

  • 设计那个 JSON 字符串的人应该被打脸。
  • 您可以通过 wikipedia api 获得此信息,例如 de.wikipedia.org/w/…
  • 它并不漂亮,但我可以在某种前端翻译模块中看到这很有意义。就像在某种语言不存在某种翻译键时应该插入标准字符串一样。

标签: javascript jquery ajax json


【解决方案1】:
json.parse.text["*"]

对象成员的好名字。


星号没有特殊含义;它和其他字符串一样。

myObject.parse.text.* 不起作用,因为* 不是合法的 JS 标识符。 Dot notation requires legal identifiers for each segment.

myObject.parse.text[0] 不起作用,因为[n] 访问以n 为键的元素或索引n 处的数组元素。 JSON 中没有数组,0 键也没有。

'*' 键上有一个 元素,所以 json.parse.text['*'] 有效。

【讨论】:

    【解决方案2】:

    尝试在parse.text 上使用索引运算符:

    var value = object.parse.text["*"];
    

    【讨论】:

      【解决方案3】:

      尝试使用

      var text = myObject.parse.text['*']
      

      【讨论】:

        【解决方案4】:

        你可以这样做:

        var json = {"parse":
         {"text":
          {"*":"text i want to access"}
         }
        }
        
        alert(json.parse.text['*']);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-25
          • 1970-01-01
          • 2018-10-31
          • 1970-01-01
          • 2015-02-17
          • 1970-01-01
          相关资源
          最近更新 更多