JQuery Parse JSON - PullRequest
       14

JQuery Parse JSON

2 голосов
/ 24 апреля 2010

Я не могу разобрать JSON, который я не могу контролировать. Что я здесь не так делаю?

data.json

{
  "img": "img1.jpg",
  "img": "img2.jpg",
  "size": [52, 97]
}

{

  "img": "img3.jpg",
  "img": "img4.jpg",
  "size": [52, 97]
}

JQuery

$.getJSON("data.json",
    function(data){
      $.each(data, function(i,item){
        alert(item.img[i]);
      });
    });

1 Ответ

9 голосов
/ 24 апреля 2010

JSON плохо сформирован. Это должно быть примерно так:

{images: [{
  "img": "img1.jpg",
  "img": "img2.jpg",
  "size": [52, 97]
 },
 {

  "img": "img3.jpg",
  "img": "img4.jpg",
  "size": [52, 97]
 }]
}

Вот почему у вас возникают проблемы при разборе.

Если у вас нет контроля над ним, но вы знаете, что он будет в подобной форме, вы можете использовать jQuery.ajax и затем преобразовать его в действительный JSON с помощью какой-либо манипуляции со строками или чего-то еще. Возможно, это не идеал, но это единственное, что вы можете сделать, если у вас нет контроля над возвращаемым JSON.

Также обратите внимание, что у вас есть две клавиши с одинаковым именем. Это еще одна проблема.

Чтобы исправить это, вы, вероятно, хотите что-то вроде следующего:

{images: [{
  "img1": "img1.jpg",
  "img2": "img2.jpg",
  "size": [52, 97]
 },
 {

  "img3": "img3.jpg",
  "img4": "img4.jpg",
  "size": [52, 97]
 }]
}

или

{images: [{
  "img": ["img1.jpg", "img2.jpg"],
  "size": [52, 97]
 },
 {

  "img": ["img3.jpg", "img4.jpg"],
  "size": [52, 97]
 }]
}

Я думаю, что еще лучше было бы что-то вроде этого:

{images: [{
   img: "img1.jpg",
   size: [52, 97]
 },
 {   
   img: "img2.jpg", 
   size: [52, 97]
 },
 {   
   img: "img3.jpg", 
   size: [52, 97]
 },
 {   
   img: "img4.jpg", 
   size: [52, 97]
 }]
}

Как я уже упоминал ранее, учитывая, что у вас нет контроля над JSON, вы мало что можете сделать. Я бы порекомендовал поговорить с администратором / разработчиком этого сайта, если можете. Им нужно сообщить, что они не возвращают действительный JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...