AngularJS:无法解析JSON列表

时间:2017-01-31 15:17:38

标签: javascript angularjs json

以下是我试图解析的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>

6 个答案:

答案 0 :(得分:11)

JSON无效,因此您会收到错误。您错过了使用JSON数组值的密钥。例如(键&#34;任何&#34;添加)将起作用:

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

答案 1 :(得分:6)

如果响应是数组,则不应将其括在大括号{}中。这将是有效的JSON:

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

当一个字符串作为输入参数时,你也试图在一个对象上使用JSON.parse。如果要将对象转换为JSON字符串,则应使用JSON.stringify

答案 2 :(得分:5)

您的JSON无效,您可以验证JSON Here

应该是:

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

答案 3 :(得分:3)

你的钥匙丢失了。

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

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

答案 4 :(得分:3)

您需要将数组分配给对象的属性。不能在没有属性的情况下在对象内部分配数组

{  
   "items":[  
      {  
         "name":"Technology"
      },
      {  
         "name":"Engineering"
      },
      {  
         "name":"Business"
      }
   ]
}
在ng-repeat中

应该改变如下

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

答案 5 :(得分:3)

您应该在JSON中的[]之前删除大括号:

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