Angularjs:JSON.parse中的意外标记'在第97个位置:语法错误。

3

这是我的输出

{"contacts":[{"id":"1","company":"Cutting","contact":"Russell Chimera"},{"id":"2","company":"Gge\'s","contact":"Marci"}]}

我遇到了这个错误

SyntaxError:在JSON的第97个位置,意外的令牌'。在JSON.parse中

我试图像这样打印它 {{x.company}} 或者 {{x.company | escape}} 但问题依旧存在。我尝试打印公司名称 "Gge's"。我不想从公司名称中删除单引号。
有人可以帮忙找出解决方案吗?

4个回答

4
你必须知道 JSON 键 "contacts" 的值是一个 JSON 数组。要访问你的值 "Gge's",你需要访问:
x = data.contacts[1].company;

您的数据所在位置:

data = {"contacts":[{"id":"1","company":"Cutting","contact":"Russell Chimera"},{"id":"2","company":"Gge\'s","contact":"Marci"}]}

2

你的作用域变量x应该持有data.contacts[1]的值,以获取公司名称中使用单引号的Gge's的值。在AngularJS中没有省略JSON值中单引号的情况。请再次确认你的JSON。

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
   var data = {
    "contacts":[
     {
       "id":"1","company":"Cutting","contact":"Russell Chimera"
     },
     {
       "id":"2","company":"Gge\'s","contact":"Marci"
     }
    ]
   };
   $scope.x = data.contacts[1];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
  {{x.company}}
</div>


感谢Ankit的回复。但是我的问题出现在我通过get $http.get("contact").then(function(response) { $scope.contact = response.data.contacts; });获取数据时。 - Deepak3301086
如果我复制相同的响应并直接使用,就像你的回复中显示的那样,它可以正常工作。 - Deepak3301086
我的代码有什么问题吗,导致我无法通过$http.get()获取它? - Deepak3301086
谢谢。这个可行。我的json_encode数组值有问题。 - Deepak3301086
@Deepak3301086 很高兴能帮助你。 - Ankit Agarwal

0
在我的情况下,我只是从JSON文件(在Postman中发布)中删除了注释行,因为JSON不会接受其中的注释。

0
请检查这个:"Gge's"。请尝试放入'的Unicode进行解析,然后问题将得到解决。

我尝试了“Gge's”。但是我将打印Gge's而不是Gge's。 - Deepak3301086
试一下这个,我刚刚移除了 { "id": "2", "company": "Gge's", "contact": "Marci" },同时使用 https://jsonlint.com/ 验证你的 JSON。 - Varun Srivastawa
从控制器打印的内容为 '{ "id": "2", "company": "Gge's", "contact": "Marci" }',由于这个原因我需要加上反斜杠 \。我尝试去除了 \ 但是没有起作用。 - Deepak3301086

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接