在json名称和JSON.parse中使用冒号时出现“意外的令牌”

时间:2016-06-21 12:09:05

标签: javascript json

我正在尝试运行以下代码,但在控制台中继续出现Uncaught SyntaxError: Unexpected token :错误。我似乎无法以json的名义逃脱冒号。

<p id="demo"></p>

<script>
var text = '{"employees":[' +
'{"first:Name":"John","lastName":"Doe" },' +
'{"first:Name":"Anna","lastName":"Smith" },' +
'{"first:Name":"Peter","lastName":"Jones" }]}';

obj = JSON.parse(text);
document.getElementById("demo").innerHTML =
text.employees[1].first:Name ;

</script>

任何解决此问题的帮助都会很棒。最终,JSON将来自Web响应,因此无法更改文本。

3 个答案:

答案 0 :(得分:3)

document.getElementById("demo").innerHTML = text.employees[1].first:Name;
                                                                   ^__error here

使用对象属性的字符串表示

document.getElementById("demo").innerHTML = text.employees[1]['first:Name']

或从对象中删除:

{"first:Name":"John","lastName":"Doe" }
       ^___ is this intentional?

答案 1 :(得分:0)

text.employees[1].first:Name ;不是有效的JavaScript,您需要像这样访问密钥:

text.employees[1]['first:Name'];

答案 2 :(得分:0)

你得到Unexpected token :,因为当找到:时,JS需要一个点符号。

您可以使用bracket notation来解决此问题,以便访问对象的属性first:Name

可在此处找到更多信息:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors

你修好了例子:

&#13;
&#13;
var text = '{"employees":[' +
  '{"first:Name":"John","lastName":"Doe" },' +
  '{"first:Name":"Anna","lastName":"Smith" },' +
  '{"first:Name":"Peter","lastName":"Jones" }]}';
var obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj.employees[1]['first:Name'];
&#13;
<dv id="demo"></dv>
&#13;
&#13;
&#13;