2017-01-31 32 views
5

下面的列表是我试图解析JSON:AngularJS:无法解析JSON

{[{"name":"Technology"},{"name":"Engineering"},{"name":"Business"}]} 

我收到以下错误:

Unexpected token [ in JSON at position 1 
    at JSON.parse (<anonymous>) 
    at fromJson 

我越来越

vm = this; 
vm.sectorList = response.data; 

而我的HTML:

使用以下从服务中的数据并将其保存到控制器范围
<div ng-repeat="sector in ctrl.sectorList"> 
    {{sector.name}} 
</div> 
+0

这不是一个有效的JSON文件。删除包裹花括号,你很好去。 –

+0

JSON格式不正确,应该是这个'{keyname:[{“name”:“Technology”},{“name”:“Engineering”},{“name”:“Business”}]}' –

+0

代码在处理响应的服务中,可能比控制器更有趣。将它包含在你的问题中会很有帮助。 – henrikmerlander

回答

3

您应该删除[]前花括号中的JSON:

[{"name":"Technology"},{"name":"Engineering"},{"name":"Business"}] 
+0

这没有把戏 – kulsoompatel

11

的JSON是无效的,所以你得到的错误。您错过了使用JSON数组值的关键。例如(键“添加任何东西”)将工作:

{"anything": [{"name":"Technology"},{"name":"Engineering"},{"name":"Business"}]} 
3

您的钥匙丢失。

{"YourKEY": [{"name":"Technology"},{"name":"Engineering"},{"name":"Business"}]} 

如果没有密钥,则无法访问数组的对象。

6

如果响应是它不应该被包含在大括号{}阵列。这将是有效的JSON:

[{"name":"Technology"}, {"name":"Engineering"}, {"name":"Business"}] 

你也试图在对象上使用JSON.parse,当它需要一个字符串作为输入参数。如果你想把一个对象变成一个JSON字符串,你应该使用JSON.stringify

3

您需要将数组赋值给对象的属性。在没有财产

{ 
    "items":[ 
     { 
     "name":"Technology" 
     }, 
     { 
     "name":"Engineering" 
     }, 
     { 
     "name":"Business" 
     } 
    ] 
} 

不能指定数组刚内对象的NG-重复它应该如下改变

<div ng-repeat="sector in ctrl.sectorList.items"> 
    {{sector.name}} 
</div> 
5

JSON是无效的,你可以验证JSONHere

它应该是:

[{ 
    "name": "Technology" 
}, { 
    "name": "Engineering" 
}, { 
    "name": "Business" 
}] 
+0

谢谢你的链接到JSON验证器 – kulsoompatel