[json] 여러 배열로 JSON 객체를 만들려면 어떻게해야합니까?

이전에 JSON을 사용한 적이 없어서 구문에 익숙하지 않습니다.

현재 저는 서로 다른 데이터 조각을 포함하는 여러 배열이 있습니다.

여러 데이터 조각이있는 여러 배열을 포함하는 하나의 JSON 개체를 만들고 싶습니다.

자동차의 다른 제조사에 대한 여러 배열을 포함하는 cars라는 객체입니다. 각 배열에는 다른 유형의 데이터 (예 : 문 수)와 함께 자동차 모델이 있습니다 (단지 가상의 예는 중요하지 않음).

누군가가 예제로 구문을 설명하면 크게 감사하겠습니다.



답변

가장 바깥 쪽 수준에서 JSON 개체는 a로 시작 {하고 }.

샘플 데이터 :

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

JSON이 data라는 변수에 할당 된 경우 액세스는 다음과 같습니다.

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

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);
    }
}

편집하다:

수정하십시오 JSON 객체로 시작 {및 종료와 함께 }, 그러나 또한 (최 단째) JSON 배열을 가지고있어 유효과 그 시작 [과 끝을 가진 ].

또한 원본 JSON 데이터의 중요한 구문 오류가 수정되었습니다. JSON 개체의 모든 키 이름은 큰 따옴표로 묶어야하며 JSON 개체 또는 JSON 배열의 모든 문자열 값도 큰 따옴표로 묶어야합니다.

보다:


답변

내가 읽고있는 좋은 책 : Nicholas C. Zakas 3rd Edition의 웹 개발자를위한 Professional JavaScript에는 JSON 구문에 관한 다음 정보가 있습니다.

“JSON 구문은 세 가지 유형의 값 표현을 허용합니다.”

관심있는 항목에 대해서는 다음과 같이 배열합니다.

“배열은 자바 스크립트의 배열 리터럴 표기법을 사용하여 JSON으로 표현됩니다. 예를 들어 다음은 자바 스크립트의 배열입니다.

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

유사한 구문을 사용하여 JSON에서 동일한 배열을 나타낼 수 있습니다.

[25, "hi", true]

변수 나 세미콜론이 없음에 유의하십시오. 배열과 객체를 함께 사용하여 다음과 같이 더 복잡한 데이터 모음을 나타낼 수 있습니다.

{
    "books":
              [
                {
                    "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 객체 stringify () 메서드를 사용할 수 있습니다. Mark Linus 답변의 예 :

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

cars는 이제 JavaScript 객체입니다. JSON 객체로 변환하려면 다음을 수행하십시오.

var jsonCars = JSON.stringify(cars);

결과 :

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

반대의 경우 JSON 객체를 JavaScript 객체로 변환하고 (파싱이라고 함) parse () 메서드를 사용합니다. 더 많은 정보가 필요하거나 책을 얻으려면 해당 용어를 검색하십시오. 여기에는 많은 예가 있습니다.


답변

다른 예시:

[
[
    {
        "@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 코드를 더 잘 이해 하십시오 .


답변

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


답변

아래 방법을 사용하여 모든 배열 값을 전달하십시오.

입력 매개 변수 : URL, 예 : “/ node / [배열의 모든 정수 값] / anyKeyWhichInArray”예 : “cars / Nissan / [0] / model”

모든 응답에 사용할 수 있습니다.

    public String getResponseParameterThroughUrl(Response r, String url) throws JsonProcessingException, IOException {
    String value = "";
    String[] xpathOrder = url.split("/");
    ObjectMapper objectMapper = new ObjectMapper();
    String responseData = r.getBody().asString();
    JSONObject jsonObject = new JSONObject(responseData);
    byte[] jsonData = jsonObject.toString().getBytes();
    JsonNode rootNode = objectMapper.readTree(jsonData);
    JsonNode node = null;
    for(int i=1;i<xpathOrder.length;i++) {
        if(node==null)
            node = rootNode;
        if(xpathOrder[i].contains("[")){
            xpathOrder[i] = xpathOrder[i].replace("[", "");
            xpathOrder[i] = xpathOrder[i].replace("]", "");
            node = node.get(Integer.parseInt(xpathOrder[i]));
        }
        else
            node = node.path(xpathOrder[i]);
    }
    value = node.asText();
    return value;
}


답변