#json #function #object #parameter-passing
#json #функция #объект #передача параметров
Вопрос:
Это мой ответ на jquery:
[
{ "depot":
{
"id": "D1",
"intersection": {
"first": "Markham",
"second": "Lawrence"
},
"address": {
"number": "25",
"street": "Cougar Court",
"city": "Scarborough",
"province": "ON",
"postal_code": "M1J"
}
},
"vehicle": [
{
"id": "V1",
"depot_id": "D1",
"model": "Ford Focus",
"price": "45",
"km_per_litre": "15",
"cargo_cu_m": "YES",
"category": "Compact car",
"image": "www.coolcarz.com"
}
,
{
"id": "V2",
"depot_id": "D1",
"model": "Honda Civic",
"price": "45",
"km_per_litre": "150",
"cargo_cu_m": "YES",
"category": "Compact car",
"image": "www.coolcarz.com"
}
,
{
"id": "V8",
"depot_id": "D1",
"model": "Pontiac Aztek",
"price": "10",
"km_per_litre": "6",
"cargo_cu_m": "YES",
"category": "SUV",
"image": "www.nocoolcarz.com"
}
,
{
"id": "V12",
"depot_id": "D1",
"model": "Chevrolet Impala",
"price": "45",
"km_per_litre": "12",
"cargo_cu_m": "YES",
"category": "Standard car",
"image": "www.coolcarz.com"
}
,
{
"id": "V29",
"depot_id": "D1",
"model": "Nissan Leaf",
"price": "150",
"km_per_litre": "0",
"cargo_cu_m": "YES",
"category": "Electronic Car",
"image": "www.coolcarz.com"
}
]
}
,
{ "depot":
{
"id": "A1",
"intersection": {
"first": "Markham",
"second": "Lawrence"
},
"address": {
"number": "25",
"street": "Cougar Court",
"city": "Scarborough",
"province": "ON",
"postal_code": "m1J"
}
},
"vehicle": [
]
}
]
Что я хочу сделать, так это то, что в какой-то момент моего кода, когда я получу эти данные ответа, я хочу передать, скажем, data [0] или или data [0].vehicle[1] в функцию
То, как я делаю это сейчас, это:
function(data) {
var items = [];
for( i=0; i<data.length; i ){
items.push('<b>' data[i].depot.intersection.first "-" data[i].depot.intersection.second " depot has following cars:" '</b>');
for( k=0; k<data[i].vehicle.length;k ){
str = '<li> <a href="#" onClick="moreInfo(' data ')">' data[i].vehicle[k].category "</a>, $" data[i].vehicle[k].price ' a day </li>';
items.push(str);
по сути, я пытаюсь создать гиперссылку (с категорией транспортного средства в виде текста), и когда пользователь нажимает на эту гиперссылку, я хочу передать массив информации о транспортном средстве новой функции с именем MoreInfo, которая выполняет свою работу. Теперь, когда я делаю это и нажимаю на гиперссылку, я вижу ошибку
missing ] after element list
timepass([object Object],[object Object]
Есть идеи?
Ответ №1:
Удалите 2 квадратные скобки из начала и конца вашего кода json и используйте его как объект, а не как массив.
То, что вы сделали, это создание массива объектов, а не объекта JSON
Комментарии:
1. Это неверно. Допустимый JSON может иметь либо object (
{}
), либо array ([]
) в качестве самого верхнего объекта. Смотрите самое начало RFC : «Текст в формате JSON представляет собой сериализованный объект или массивJSON-text = object / array
«.2. Я не говорю, что это неверно, просто предлагаю использовать объектную нотацию вместо нотации массива. Извините, если я делаю это запутанным
3. WooDzu вы можете быть более конкретными?
4. измените все квадратные скобки на круглые в вашей нотации Json (или в коде генератора), затем выполните итерацию по анализируемому объекту точно так же, как вы делаете, с одним отличием, используйте цикл for(depot в data). В объекте нет методов, так что вы можете безопасно его использовать.