2015-07-09 2 views
9

У объекта json есть ключ lastLogin. Значение этого параметра - строка.Angular js Parsing Json object

Я пытаюсь напечатать ПгвЬЫате Джон и Блейка

$scope._users = [{ 
     "User": { 
      "userid": "dummy", 
      "lastlogin": "{\"employees\":[{\"firstName\":\"John\"}, {\"firstName\":\"Blake\"}]}", 
     } 
    }]; 

FIDDLE

Любая помощь будет оценена.

+7

Pet peeve: В JavaScript нет объектов JSON. Есть объекты, и есть строки JSON. '$ scope._users [0]' является примером объекта (а не объекта JSON). '$ scope._users [0] .User.lastlogin' является примером строки JSON. – Amadan

+0

JavaScript чувствителен к регистру. lastlogin! == lastLogin. –

ответ

17

Попробуйте как этот

Вид

<div ng-controller="MyCtrl"> 
    <div ng-repeat="user in _users" ng-init="myInfo=parJson(user.User.lastlogin)"> 
     <div ng-repeat="emp in myInfo.employees">{{emp.firstName}}</div> 
    </div> 
</div> 

Контроллер

var myApp = angular.module('myApp', []); 

function MyCtrl($scope) { 
    $scope.getName = function (user) { 
     return "Names"; 
    }; 

    $scope._users = [{ 
     "User": { 
      "userid": "dummy", 
       "lastlogin": "{\"employees\":[{\"firstName\":\"John\"},     {\"firstName\":\"Blake\"}]}", 
     } 
    }]; 
    $scope.parJson = function (json) { 
     return JSON.parse(json); 
    } 
    //console.log(JSON.parse($scope._users[0].User.lastlogin)); 
} 

DEMO

вы также можете использовать angular.fromJson.

Как это

$scope.parJson = function (json) { 
    return angular.fromJson(json); 
} 

DEMO

+4

Аник, почему вы использовали JSON.parse вместо встроенного углового. –

+2

@ ДаниэльНальбах, не имеет большого значения между JSON.parse и angular.fromJson? –

+1

Не совсем, angular.fromJson - это просто обертка поверх JSON.parse с проверкой строки, чтобы предотвратить двойной синтаксический анализ. Я думал, что он сделал больше, но проверил источник, и все. –

3

Чтобы правильно разобрать "lastlogin": "{\"employees\":[{\"firstName\":\"John\"}, {\"firstName\":\"Blake\"}]}" данные, которые вы можете использовать

angular.fromJson(User.lastLogin); 

Просто убедитесь, что вы даете внутренний объект т.е. lastlogin к метод, и он удалит все inv такие как \ и "из json-данных.