2015-01-22 3 views
0

Как и в названии, я использую Factual API для возврата некоторых мест вблизи геолокации, и у меня возникают проблемы с анализом данных с помощью jQuery. Пример полного JSon строки я вернулся похож на это:Parsing JSON String From Factual API

"{ 
\"version\": 3, 
\"status\": \"ok\", 
\"response\": { 
    \"data\": [ 
     { 
      \"region\": \"ON\", 
      \"tel\": \"(519)452-4430\", 
      \"category_labels\": [ 
       [ 
        \"CommunityandGovernment\", 
        \"Education\", 
        \"CollegesandUniversities\" 
       ] 
      ], 
      \"name\": \"FanshaweCollege\", 
      \"longitude\": -81.200929, 
      \"fax\": \"(519)452-4420\", 
      \"website\": \"http: //www.fanshawec.ca\", 
      \"hours\": { 
       \"monday\": [ 
        [ 
         \"6: 00\", 
         \"17: 00\" 
        ] 
       ], 
       \"tuesday\": [ 
        [ 
         \"6: 00\", 
         \"17: 00\" 
        ] 
       ], 
       \"wednesday\": [ 
        [ 
         \"6: 00\", 
         \"17: 00\" 
        ] 
       ], 
       \"friday\": [ 
        [ 
         \"6: 00\", 
         \"13: 00\" 
        ] 
       ] 
      }, 
      \"neighborhood\": [ 
       \"HuronHeights\" 
      ], 
      \"postcode\": \"N5Y5R6\", 
      \"category_ids\": [ 
       29 
      ], 
      \"country\": \"ca\", 
      \"address\": \"1001FanshaweCollegeBlvd\", 
      \"locality\": \"London\", 
      \"hours_display\": \"Mon-Wed6: 00-17: 00;Fri6: 00-13: 00\", 
      \"latitude\": 43.013919, 
      \"factual_id\": \"fba3ee56-9947-424d-bba4-f6c955491fff\", 
      \"$distance\": 219.42628 
     } 
    ], 
    \"included_rows\": 1 
} 
}" 

Это, как я пытаюсь взаимодействовать с JSON:

success: function (data) { 
     var result = JSON.parse(data.d); 
     $.each(result, function (i, item) { 
      console.log(result.latitude); 
     }); 
    } 

Я получаю JSON от AJAX звоните и попробовали data.d и создавали объект с использованием JSON.parse и обращались к нему таким образом, но у меня все еще возникают проблемы, связанные с фактическими данными. Я продолжаю получать неопределенные ошибки.

Как я могу разбирать строку JSON, вот так?

+0

Вы разбираете его с помощью 'JSON.parse()' или '$ .parseJSON()'. В чем проблема? – Barmar

+0

Что вы понимаете, пытаясь 'data.d'? Свойством 'data' является массив, поэтому вам нужно его индексировать. – Barmar

+0

Если вы укажете 'dataType: 'json'' в своем вызове AJAX, jQuery автоматически проанализирует его для вас. Но я подозреваю, что ваша проблема заключается не в разборе JSON, а в правильном доступе к данным в результирующем объекте. Вам нужно объяснить, к каким частям вы пытаетесь получить доступ, и показать свой код. – Barmar

ответ

1

Оно должно быть:

$.each(result.response.data, function(i, item) { 
    console.log(item.latitude); 
}); 

С JSON, вы можете увидеть, что массив локаций вложен:

"{ 
\"version\": 3, 
\"status\": \"ok\", 
\"response\": { 
    \"data\": [ 

Первый уровень является response собственностью, и в том, что это data Недвижимость.

А затем в вашей петле вы использовали response.latitude вместо item.latitude.

+0

Удивительный, спасибо тонну! – Delete