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

时间:2018-08-31 13:38:09

标签: javascript json

例如,这是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"
         }
        ]

2 个答案:

答案 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>