如何使用json字符串分配$ scope变量

时间:2017-04-10 10:37:50

标签: angularjs json

在AngularJs中,以下是有效的 -

$scope.product= {items:[{itemname:'apple',itemdesc:'fruit'}]}

但我想从json字符串中获取$scope.product,如下所示 -

var strJson = "{items:[{itemname:'apple',itemdesc:'fruit'}]}";
$scope.product=strJson;

无效。我只有一个json字符串,我需要分配给$scope.product。我使用了JSON.parse()JSON.toJson(),但它们无效。 我不知道自己做错了什么

以下是我的确切代码:

$http.get('/getItems').success(function(data) {
    var jsondata="{\items\:";
    jsondata+=JSON.stringify(data);
    jsondata+="}";
    jsondata=jsondata.replace(/"itemname"/g, 'itemname');
    jsondata=jsondata.replace(/"itemdesc"/g, 'itemdesc');

        // WORKING CODE
    $scope.product = {items:[{itemname:"apple",itemdesc:"fruit"}]}; 

        // NOT WORKING CODE
    var jsonObj = jsondata; 
    $scope.product = jsonObj;
});

6 个答案:

答案 0 :(得分:4)

JSON standard期望值围绕双引号。所以你的JSON字符串是不可解析的JSON。



var mystr = '{"items": [{"itemname": "apple","itemdesc": "fruit"}]}';
console.log(JSON.parse(mystr))
console.log(typeof JSON.parse(mystr))




答案 1 :(得分:1)

这是问题所在。显然,如果您使用JSON.parse将JSON字符串转换为JSON,那么您的属性名称应该用双引号而不是单引号括起来。

angular.module("app",[])
.controller("ctrl",function($scope){

$scope.product= '{"items":[{"itemname":"apple","itemdesc":"fruit"}]}'
    $scope.product = JSON.parse($scope.product);
    
console.log($scope.product)
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
 
</div>

答案 2 :(得分:0)

您可以使用JSON.parse,找到以下答案

var strJson = JSON.parse("{items:[{itemname:'apple',itemdesc:'fruit'}]}");

答案 3 :(得分:0)

我建议使用角度方式将json转换为对象:

$scope.product= "{items:[{itemname:'apple',itemdesc:'fruit'}]}";
$scope.product = angular.fromJson($scope.product);

反对json如下:

var strJson = angular.toJson($scope.product);

答案 4 :(得分:0)

我认为你的字符串格式不正确,应该是这样的。

var str = '{"items":[{"itemname":"apple","itemdesc":"fruit"}]}';
$scope.product = JSON.parse(str)

答案 5 :(得分:0)

请在JSON中使用双引号(通过转义它们)。然后JSON.parse()将适当地接受输入字符串并正确解析。同时删除方括号。

$scope.jsonString = "{\"items\":{\"itemname\":\"apple\",\"itemdesc\":\"fruit\"}}";

var test = JSON.parse($scope.jsonString);

在旁注上您还可以使用JSON Lint来检查您的JSON是否有效。

如果有帮助,请告诉我。