2012-01-11 2 views
1

Я следовал советам here о том, как использовать JSON.Данные JSON не разобраны?

После использования

$resultAml = json_encode($resultArray); 

в PHP я получаю это на клиенте:

[{"id":"1","0":"1","title":"Facebook","1":"Facebook","url":"http://facebook.com","2":"http://facebook.com","domain":"facebook.com","3":"facebook.com","tag":"","4":""},{"id":"1","0":"1","title":"Ideeli","1":"Ideeli","url":"http://www.ideeli.com","2":"http://www.ideeli.com","domain":"ideeli.com","3":"ideeli.com","tag":"web","4":"web"},{"id":"1","0":"1","title":"Kikin","1":"Kikin","url":"http://www.kikin.com","2":"http://www.kikin.com","domain":"kikin.com","3":"kikin.com","tag":"web","4":"web"},{"id":"1","0":"1","title":"Lot18","1":"Lot18","url":"http://www.lot18.com","2":"http://www.lot18.com","domain":"lot18.com","3":"lot18.com","tag":"web","4":"web"},{"id":"1","0":"1","title":"Quora","1":"Quora","url":"http://quora.com","2":"http://quora.com","domain":"quora.com","3":"quora.com","tag":"","4":""},{"id":"1","0":"1","title":"Twitter","1":"Twitter","url":"http://twitter.com","2":"http://twitter.com","domain":"twitter.com","3":"twitter.com","tag":"","4":""}] 

Это выглядит как действительный JSON в соответствии с json.org

Howwever,

Когда Я разбираю его на стороне клиента, используя

JSON.parse 

Я получаю этот результат:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] 

Похоже, один [объект Object] для каждой записи в таблице.

Что такое объект Object?

Куда я здесь ошибся? Или если нет, то как я могу получить данные в результате?

+1

Это именно то, что вы хотите. Затем вы можете перебрать свой массив объектов и получить все, что хотите ... –

ответ

5

У вас есть данные, вы просто неправильно понимаете, как это отображается. Строковое представление по умолчанию для любого JavaScript Object, что и есть значения JSON {...}, равно [object Object]. Если вы попытаетесь получить доступ к свойствам объектов, вы увидите, что данные, которые вы ожидаете, есть:

var input = '[{"id":"1","0":"1","title":"Facebook","1":"Facebook","url":"http://facebook.com","2":"http://facebook.com","domain":"facebook.com","3":"facebook.com","tag":"","4":""},{"id":"1","0":"1","title":"Ideeli","1":"Ideeli","url":"http://www.ideeli.com","2":"http://www.ideeli.com","domain":"ideeli.com","3":"ideeli.com","tag":"web","4":"web"},{"id":"1","0":"1","title":"Kikin","1":"Kikin","url":"http://www.kikin.com","2":"http://www.kikin.com","domain":"kikin.com","3":"kikin.com","tag":"web","4":"web"},{"id":"1","0":"1","title":"Lot18","1":"Lot18","url":"http://www.lot18.com","2":"http://www.lot18.com","domain":"lot18.com","3":"lot18.com","tag":"web","4":"web"},{"id":"1","0":"1","title":"Quora","1":"Quora","url":"http://quora.com","2":"http://quora.com","domain":"quora.com","3":"quora.com","tag":"","4":""},{"id":"1","0":"1","title":"Twitter","1":"Twitter","url":"http://twitter.com","2":"http://twitter.com","domain":"twitter.com","3":"twitter.com","tag":"","4":""}]'; 
var data = JSON.parse(input); 
alert(data[0].title); // displays "Facebook" 
1

Все правильно.

Нет специальной поддержки для печати свойств объекта; { a: 42 }.toString()[object Object].

Для просмотра фактических данных, звоните console.log(something).
Это отображает фактическую структуру объекта в консоли.

+0

приятная информация ... Спасибо! –

1

Давайте рассмотрим ваши проанализированные json данные.

[ 
{ 
    "id":"1", 
    "0":"1", 
    "title":"Facebook", 
    "1":"Facebook", 
    "url":"http://facebook.com", 
    "2":"http://facebook.com", 
    "domain":"facebook.com", 
    "3":"facebook.com", 
    "tag":"", 
    "4":"" 
}, 
{ 
    "id":"1", 
    "0":"1", 
    "title":"Ideeli", 
    "1":"Ideeli", 
    "url":"http://www.ideeli.com", 
    "2":"http://www.ideeli.com", 
    "domain":"ideeli.com", 
    "3":"ideeli.com", 
    "tag":"web", 
    "4":"web" 
}, 
{ 
    "id":"1", 
    "0":"1", 
    "title":"Kikin", 
    "1":"Kikin", 
    "url":"http://www.kikin.com", 
    "2":"http://www.kikin.com", 
    "domain":"kikin.com", 
    "3":"kikin.com", 
    "tag":"web", 
    "4":"web" 
}, 
{ 
    "id":"1", 
    "0":"1", 
    "title":"Lot18", 
    "1":"Lot18", 
    "url":"http://www.lot18.com", 
    "2":"http://www.lot18.com", 
    "domain":"lot18.com", 
    "3":"lot18.com", 
    "tag":"web", 
    "4":"web" 
}, 
{ 
    "id":"1", 
    "0":"1", 
    "title":"Quora", 
    "1":"Quora", 
    "url":"http://quora.com", 
    "2":"http://quora.com", 
    "domain":"quora.com", 
    "3":"quora.com", 
    "tag":"", 
    "4":"" 
}, 
{ 
    "id":"1", 
    "0":"1", 
    "title":"Twitter", 
    "1":"Twitter", 
    "url":"http://twitter.com", 
    "2":"http://twitter.com", 
    "domain":"twitter.com", 
    "3":"twitter.com", 
    "tag":"", 
    "4":"" 
} 
] 

Похоже, что у вас есть много объектов в ваших данных. OBJECT представляет собой набор данных со свойствами. Ваш объект обладает следующими свойствами:

id, 0, title, 1, url, 2, domain, 3, tag, 4 

Если вы сравниваете с шаблонами PHP, это похоже на многомерный массив. Как для java, так и для PHP, если вы хотите обрабатывать все записи, вы должны перебирать свой объект данных. Вы можете сделать это, используя функцию jQuery «each()».

var data = 'yourJSONoutput';  
$.each(data, function() { 
    alert(this.title); 
}); 

Это будет предупреждать названия всех объектов внутри ваших данных json.

+0

Я ожидал массив массивов ... Я не уверен, почему внешняя структура не считается массивом? –

+0

Это именно то, что у вас есть. У вас есть массив, содержащий другие массивы.Внешняя структура не считается массивом, потому что вы не дали ей имени. Попробуйте изменить код: {"data": [YOUR_OLD_CODE_HERE]} Обратите внимание, что я начал с {и закончился} –

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