例如,这是JSON数组:
[
{
"name":"Jennifer Bellingham",
"shortname":"Jenni"
},
{
"name":"Jonathan G. Ferrar II",
"shortname":"Jonathan_Ferrar"
}
]
这是我希望将其转换的格式(javascript对象的数组):
[
{
name : "Jennifer Bellingham",
shortname : "Jenni"
},
{
name : "Jonathan G. Ferrar II",
shortname : "Jonathan_Ferrar"
}
]
我使用了JSON.parse()
,但出现此错误:
SyntaxError:JSON中位置0处的意外令牌u
这是我的代码:
我有一个angularjs应用程序:
var app = angular.module('app', ['ngRoute','appControllers',
'ui.carousel']);
这是我的控制器:(我正在尝试使用angularjs ui轮播)
app.controller('uiCarousel', function($scope,$http) {
$http.get('data/test.json').then(function(response){
$scope.mySlides = response.data;
console.log("My Slides :", $scope.mySlides ); //I'm getting the result here
});
//But here I can't do the parsing right,
this.slides = JSON.parse($scope.mySlides);
});
上面代码中的this.slides需要这种格式:
[
{
name : "Jennifer Bellingham",
shortname : "Jenni"
},
{
name : "Jonathan G. Ferrar II",
shortname : "Jonathan_Ferrar"
}
]
答案 0 :(得分:0)
感谢您提交第一个问题。
对于哪个代码片段实际上会引起您所引用的错误,我们还不太清楚-如果您可以包含该代码片段,则可以帮助我们理解您的问题。
可能是您正在将一个对象而不是字符串输入到JSON.parse
中。
下面的代码对我有用-我已经使用反引号`创建了字符串文字,其中包含我想解析的json字符串。
const jsonString = `
[
{
"name":"Jennifer Bellingham",
"shortname":"Jenni"
},
{
"name":"Jonathan G. Ferrar II",
"shortname":"Jonathan_Ferrar"
}
]
`;
const arrayOfObjects = JSON.parse(jsonString);
console.log(arrayOfObjects); // Returns the array of objects you reference
答案 1 :(得分:0)
嗯... JSON和javascript对象有点一样(后者可以包含更多的东西,例如函数,getter,setter等...)
我猜您对对象文字的书写风格感到困惑。 {"key": "value"}
和{key: "value"}
是相同的。
所以... response.data
实际上是一个javascript对象(等效于JSON数据)
基本上不需要解析任何内容...
let a = [
{
"name": "Jennifer Bellingham",
"shortname": "Jenni"
},
{
"name": "Jonathan G. Ferrar II",
"shortname": "Jonathan_Ferrar"
}
];
let b = [
{
name: "Jennifer Bellingham",
shortname: "Jenni"
},
{
name : "Jonathan G. Ferrar II",
shortname : "Jonathan_Ferrar"
}
];
console.log(angular.equals(a,b));
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
这就是为什么由于尝试解析已解析的JSON字符串而出现错误的原因。
例如,请看以下链接:https://en.wikipedia.org/api/rest_v1/page/summary/JavaScript的api响应主体是JSON,因此获取它就像获取.json文件
然后response.data
将是一个javascript对象...因此我可以直接访问response.data.extract
angular.module("myApp", [])
.controller("myCtrl", function($scope, $http) {
$http
.get("https://en.wikipedia.org/api/rest_v1/page/summary/JavaScript")
.then(function(response) {
$scope.extract = response.data.extract;
})
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">{{extract || "loading"}}</div>