2015-12-16 4 views
0

У меня возникли проблемы с получением объекта в json-файле.AngularJS - json file parse

Я использую

.controller("ListController", ["$scope", "$http", function($scope, $http){ 
     $http.get('../scripts/bbtv.json').success(function(data) { 
      $scope.artists = data;    
     }); 
    }]) 

данные попадают в переменной, но я не могу получить доступ к любому объекту из него. Вот часть json-файла. Например, как распечатать {{programmeField.titleField.valueField}}?

{ 
"channelField": [ 
{ 
    "displaynameField": [ 
    { 
     "valueField": "bTV" 
    } 
    ], 
    "idField": "BBTV" 
} 
], 
"programmeField": [ 
{ 
    "titleField": [ 
    { 
     "langField": "BULG", 
     "valueField": "Тази сутрин" 
    } 
    ], 
    "subtitleField": [], 
    "creditsField": { 
    "moderatorField": [ 
     "Антон Хекимян" 
    ] 
    }, 
    "categoryField": [ 
    { 
     "langField": "BULG", 
     "valueField": "Информационно предаване" 
    }, 
    { 
     "langField": "BULG", 
     "valueField": "Сутрешен блок" 
    } 
    ], 
    "languageField": { 
    "valueField": "BULG" 
    }, 
    "lengthField": { 
    "unitsField": 1, 
    "valueField": "180" 
    }, 
    "videoField": { 
    "presentField": "yes", 
    "colourField": "yes", 
    "aspectField": "4:3", 
    "qualityField": "800x600" 
    }, 
    "audioField": { 
    "presentField": "yes", 
    "stereoField": "no", 
    "dolbyDigitalField": "no", 
    "dolbySurroundField": "no" 
    }, 
    "startField": "20151216063000 +0200", 
    "stopField": "20151216093000 +0200", 
    "channelField": "BBTV", 
    "clumpidxField": "0/1", 
    "_photos": [ 
    { 
     "_id": "5f38a2ab2fedd6b0e48da60b833bb4ddb69d3a1c", 
     "_url": "***.jpg", 
     "_type": "Letterbox" 
    } 
    ], 
    "_deleted": false, 
    "_id": "189397717", 
    "_contentId": 45207610, 
    "_broadcastdate": "20151216" 
} 
} 
+0

Вы ищете 'JSON.parse (data)'? – AntiHeadshot

+1

У меня возникла ошибка, когда я подтвердил ваш JSON. Проверьте, правильно ли сформирован ваш JSON. –

+0

JSON действительно, я просто вырезал его часть для примера :) – benzata

ответ

1

JSON - это транспортный формат. Как только он декодируется, это встроенная структура данных, как и любая другая структура. Поскольку вы находитесь в JS, используйте соглашения JS и следуйте за брекетингом/привязкой. Обратите внимание на маркировку на объекты/массивы ниже:

data = { "channelField": [ 
     a     b 
      { "displaynameField": [ 
      c      d 
       { "valueField": "bTV" 
       e 
       } 
      ], 
       "idField": "BBTV" 

data.channelField[0].displaynameField[0].valueField -> "bTV" 
    a    b c     d e 
+0

Отлично, спасибо! Мне удалось это сделать! :) – benzata

+0

Можете ли вы помочь мне пройти и распечатать все значениеField от json? Я пытаюсь сделать это с помощью «ng-repeat», но безуспешно. – benzata

0

С вашей "programmeField" и "titleField" являются массив, используйте programmeField [0] .titleField [0] .valueField

В будущем вы можете скопировать ваш json до http://jsonviewer.stack.hu/ и щелкните вкладку Viewer.

+0

Спасибо, Сукеш! Все работает сейчас! :) – benzata