Подтвердить что ты не робот

Как создать объект JSON с несколькими массивами?

Я никогда не использовал JSON, поэтому я не знаком с его синтаксисом.

В настоящий момент у меня есть несколько массивов, содержащих разные фрагменты данных.

Я хотел бы создать один объект JSON, содержащий несколько массивов с несколькими фрагментами данных.

например.

Объект, называемый автомобилями, содержащий несколько массивов, каждый для другого автомобиля. В каждом массиве будет модель автомобиля вместе с некоторыми другими типами данных, например. количество дверей (на самом деле не имеет значения, это просто вымышленный пример.)

Было бы очень полезно, если бы кто-нибудь объяснил синтаксис примером.

4b9b3361

Ответ 1

На самом внешнем уровне объект JSON начинается с { и заканчивается на }.

Пример данных:

{
    "cars": {
        "Nissan": [
            {"model":"Sentra", "doors":4},
            {"model":"Maxima", "doors":4}
        ],
        "Ford": [
            {"model":"Taurus", "doors":4},
            {"model":"Escort", "doors":4}
        ]
    }
}

Если JSON назначается переменной, называемой данными, доступ к ней будет выглядеть следующим образом:

data.cars['Nissan'][0].model   // Sentra
data.cars['Nissan'][1].model   // Maxima
data.cars['Nissan'][2].doors   // 4

for (var make in data.cars) {
    for (var i = 0; i < data.cars[make].length; i++) {
        var model = data.cars[make][i].model;
        var doors = data.cars[make][i].doors;
        alert(make + ', ' + model + ', ' + doors);
    }
}

Другой подход (использование ассоциативного массива для моделей автомобилей, а не индексированного массива):

{
    "cars": {
        "Nissan": {
            "Sentra": {"doors":4, "transmission":"automatic"},
            "Maxima": {"doors":4, "transmission":"automatic"}
        },
        "Ford": {
            "Taurus": {"doors":4, "transmission":"automatic"},
            "Escort": {"doors":4, "transmission":"automatic"}
        }
    }
}

data.cars['Nissan']['Sentra'].doors   // 4
data.cars['Nissan']['Maxima'].doors   // 4
data.cars['Nissan']['Maxima'].transmission   // automatic

for (var make in data.cars) {
    for (var model in data.cars[make]) {
        var doors = data.cars[make][model].doors;
        alert(make + ', ' + model + ', ' + doors);
    }
}

Edit:

Исправление: объект JSON начинается с { и заканчивается на }, но он также действителен, чтобы иметь массив JSON (на самом внешнем уровне), который начинается с [ и заканчивается на ].

Кроме того, были исправлены значительные ошибки синтаксиса в исходных данных JSON: все имена ключей в объекте JSON должны быть в двойных кавычках, а все строковые значения в объекте JSON или в массиве JSON также должны быть в двойных кавычках.

См:

Ответ 2

Хорошая книга, которую я читаю: Профессиональный JavaScript для веб-разработчиков Николаса К. Закаса 3-го издания содержит следующую информацию о синтаксисе JSON:

"Синтаксис JSON позволяет отображать три типа значений".

Относительно интересующего вас массива, он говорит:

"Массивы представлены в JSON с использованием символьной записи массива из JavaScript. Например, это массив в JavaScript:

var values = [25, "hi", true];

Вы можете представить этот же массив в JSON с использованием аналогичного синтаксиса:

[25, "hi", true]

Обратите внимание на отсутствие переменной или точки с запятой. Массивы и объекты могут использоваться вместе для представления более сложных наборов данных, таких как:

[
    {
        "title": "Professional JavaScript",
        "authors": [
            "Nicholas C. Zakas"
        ],
        edition: 3,
        year: 2011
    },
    {
        "title": "Professional JavaScript",
        "authors": [
            "Nicholas C.Zakas"
        ],
        edition: 2,
        year: 2009
    },
    {
        "title": "Professional Ajax",
        "authors": [
            "Nicholas C. Zakas",
            "Jeremy McPeak",
            "Joe Fawcett"
        ],
        edition: 2,
        year: 2008
    }
]

Этот массив содержит несколько объектов, представляющих книги. Каждый объект имеет несколько ключей, один из которых является "авторами", который является другим массивом. Объекты и массивы - это, как правило, элементы верхнего уровня структуры данных JSON (даже если это не требуется) и могут использоваться для создания большого количества структур данных.

Чтобы сериализовать (преобразовать) объект JavaScript в строку JSON, вы можете использовать метод строкового объекта JSON. Для примера от Марка Линуса ответ:

var cars = [{
    color: 'gray',
    model: '1',
    nOfDoors: 4
    },
    {
    color: 'yellow',
    model: '2',
    nOfDoors: 4
}];
Автомобили

теперь являются объектами JavaScript. Чтобы преобразовать его в объект JSON, вы можете сделать:

var jsonCars = JSON.stringify(cars);

Что дает:

"[{"color":"gray","model":"1","nOfDoors":4},{"color":"yellow","model":"2","nOfDoors":4}]"

Чтобы сделать обратное, преобразовать объект JSON в объект JavaScript (это называется синтаксический анализ), вы должны использовать метод parse(). Найдите эти термины, если вам нужна дополнительная информация... или получите книгу, у нее много примеров.

Ответ 3

Другой пример:

[  
[  
    {  
        "@id":1,
        "deviceId":1,
        "typeOfDevice":"1",
        "state":"1",
        "assigned":true
    },
    {  
        "@id":2,
        "deviceId":3,
        "typeOfDevice":"3",
        "state":"Excelent",
        "assigned":true
    },
    {  
        "@id":3,
        "deviceId":4,
        "typeOfDevice":"júuna",
        "state":"Excelent",
        "assigned":true
    },
    {  
        "@id":4,
        "deviceId":5,
        "typeOfDevice":"nffjnff",
        "state":"Regular",
        "assigned":true
    },
    {  
        "@id":5,
        "deviceId":6,
        "typeOfDevice":"44",
        "state":"Excelent",
        "assigned":true
    },
    {  
        "@id":6,
        "deviceId":7,
        "typeOfDevice":"rr",
        "state":"Excelent",
        "assigned":true
    },
    {  
        "@id":7,
        "deviceId":8,
        "typeOfDevice":"j",
        "state":"Excelent",
        "assigned":true
    },
    {  
        "@id":8,
        "deviceId":9,
        "typeOfDevice":"55",
        "state":"Excelent",
        "assigned":true
    },
    {  
        "@id":9,
        "deviceId":10,
        "typeOfDevice":"5",
        "state":"Excelent",
        "assigned":true
    },
    {  
        "@id":10,
        "deviceId":11,
        "typeOfDevice":"5",
        "state":"Excelent",
        "assigned":true
    }
],
1
]

Считать массив

$.each(data[0], function(i, item) {
         data[0][i].deviceId + data[0][i].typeOfDevice  + data[0][i].state +  data[0][i].assigned 
    });

Используйте http://www.jsoneditoronline.org/, чтобы лучше понять код JSON

Ответ 4

var cars = [
    manufacturer: [
        {
            color: 'gray',
            model: '1',
            nOfDoors: 4
        },
        {
            color: 'yellow',
            model: '2',
            nOfDoors: 4
        }
    ]
]

Ответ 5

Вы можете создать массив JSON с помощью:

String jsonString = "";
JSONArray array = (JSONArray) new JSONTokener(jsonString).nextValue();