이전에 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;
}