2013-10-07 6 views
1

Я использую $ http для извлечения коллекции пользователей. Необработанный ответ от сервера это ...Угловой фильтр JSON для массива объектов

[{"id":2,"name":"John Doe","email":"[email protected]"}] 

Logging параметра данных в обратном вызове показывает, что это ...

[Object, each: function, eachSlice: function, all: function, any: function, collect: function…] 
    0: Object 
    $$hashKey: "004" 
    email: "[email protected]" 
    id: 2 
    name: "John Doe" 
    __proto__: Object 
    length: 1 
__proto__: Array[0] 

достаточно хорошо. Похоже, что $ http уже де-сериализовал необработанный JSON в объект JavaScript.

Далее я присвоить данные переменной $ области видимости, внутри обратного вызова успеха для того, чтобы выполнить некоторую отладку в браузере ...

$scope.debug = data; 

Сейчас, на мой взгляд, я хочу, чтобы отобразить это как довольно JSON для отладки.

<pre>{{debug | json}}</pre> 

И я получаю это ...

"[{\"id\": 2, \"name\": \"John Doe\", \"email\": \"[email protected]\", \"$$hashKey\": \"004\"}]" 

Я пытаюсь получить что-то вроде этого ...

[ 
    { 
    "id": 2, 
    "name": "John Doe", 
    "email": "[email protected]", 
    "$$hashKey": "004" 
    } 
] 

Я также попытался stringify в яваскрипта массив в контроллере ...

$scope.debug = JSON.stringify(data, true); 

и не использовать t он фильтр ...

<pre>{{debug}}</pre> 

, но я получаю те же результаты, кроме $$ hashKey был удален ...

"[{\"id\": 2, \"name\": \"John Doe\", \"email\": \"[email protected]\"}]" 

Если я просто присвоить первый элемент массива в $ объеме и использовать JSon фильтр, то он работает отлично ...

$scope.debug = data[0]; 

на мой взгляд ...

<pre>{{debug | json}}</pre> 

Результаты в ...

{ 
    "id": 2, 
    "name": "John Doe", 
    "email": "[email protected]" 
} 

Я знаю, что есть и другие способы, чтобы получить то, что я хочу. Я просто пытаюсь понять, что происходит.

Спасибо!

+0

почему бы вам не просто использовать консоль? O.o – thescientist

+0

Спасибо. Я использую консоль, и это работает нормально. Но я хотел бы разобраться в сути проблемы, а не просто обойти ее. Я хочу понять, почему это не работает, как я ожидал.Либо он работает правильно, и я неправильно понимаю, как он должен работать, или я правильно понимаю, как он должен работать, но я делаю это немного неправильно, или я понимаю, как он должен работать, и делаю это правильно , но есть некоторая ошибка в коде фильтра. Просто пытаюсь учиться. – Kevin

ответ

1

Вы должны разобрать json, а не строчить.

Попробуйте это:

$scope.debug = JSON.parse(data)

Working Fiddle

+0

Спасибо, Beteraraba, я пробовал это, но проблема в том, что в обратном вызове успеха для вызова $ http get json уже разбирается в объект массива JavaScript. – Kevin

Смежные вопросы