【问题标题】:Accessing JSON data with colon in the label访问标签中带有冒号的 JSON 数据
【发布时间】:2014-07-02 13:53:43
【问题描述】:

我在标签中有带有冒号的 json 数据(请参阅响应数据),我发现很难使用以下代码在 Angular 中访问这些数据:

<li ng-repeat="i in items.autnresponse.responsedata | searchFor:searchString"> <p>{{i.autn:numhits}}</p> </li>

我不断收到这样的错误:

Error: [$parse:syntax] Syntax Error: Token ':' is an unexpected token at column 7 of the expression [i.autn:numhits] starting at [:numhits].

JSON 数据摘录:

"autnresponse": {
    "action": {
        "$": "QUERY"
    },
    "response": {
        "$": "SUCCESS"
    },
    "responsedata": {
        "autn:numhits": {
        "$": "92"
    },
    "autn:totalhits": {
        "$": "92"
    },
    "autn:totaldbdocs": {
        "$": "188"
    },
    "autn:totaldbsecs": {
        "$": "188"
    },

有人知道解决这个问题的方法吗?

【问题讨论】:

  • 您尝试使用哪种语言访问它? JavaScript?珀尔? Python?还有什么?
  • 抱歉,尝试使用 angularjs 访问它
  • 是无法从 JSON 解析为 JS 结构,还是您编写的一行代码无法访问生成的 JS 结构中的某些内容?如果是后者,请提供代码行。
  • 它适用于标签中没有冒号的标签,但是当我尝试像 {{i.autn:numhits}} 这样的东西时,我得到了错误......它不喜欢冒号在json标签中
  • {{i.autn:numhits}}

  • 跨度>

标签: javascript json angularjs colon


【解决方案1】:

我假设我从 cmets 知道我的问题的答案,然后发布我的回答:

假设

您的 JSON 解析良好,但您的代码无法访问结果数据结构中的某些内容

回答

对字符串使用方括号表示法:

var x = i['autn:numhits'];

当您在变量中具有属性名称时,可以使用相同的方法。使用相同的示例:

var propertyName = 'autn:numhits';
var x = i[propertyName];

附录

对于 Angular 模板,请尝试

{{i['autn:numhits']}}

【讨论】:

  • Thx :) 这可能花了我几个小时才弄清楚。
【解决方案2】:

使用方括号来访问它,就像字典而不是点符号一样。将{{i.autn:numhits}} 替换为{{i['autn:numhits']}}

请注意,如果您想用双引号将 autn:numhits 括起来,您需要对它们进行 html 转义。

【讨论】:

  • 谢谢解释,现在更有意义了
猜你喜欢
相关资源
最近更新 更多
热门标签