如何将 JSON 数组转换为 javascript 对象数组?

亚罗尼·巴巴哈尼

例如,这是 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()但出现此错误:

语法错误:JSON 中的意外标记 u 位于位置 0

这是我的代码:

我有一个 angularjs 应用程序:

var app = angular.module('app', ['ngRoute','appControllers',
'ui.carousel']);

这是我的控制器:(我正在尝试使用 angularjs ui carousel)

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"
         }
        ]
德万什

嗯... 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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章