만들고자 하는 구조는

{

  "j1":{

        "j2":{

"arr1":[{"j3":"a"},{"j4":"b"}]

              }

        }

}


이런 유형의 구조이다. 그렇다면 필요한 코드는

ObjectNode json = json.newObject();

ObjectNode j1 = json.newObject();

ObjectNode j2 = json.newObject();

ObjectNode arr1 = json.newObject();

ObjectNode j3 = json.newObject();

ObjectNode j4 = json.newObject();

ArrayNode array = null;


이렇게 한 뒤 구현하려면 역순으로 구현한다.


json객체 생성

j3.put("j3","a"); --> {"j3":"a"}

j4.put("j4","b"); --> {"j4":"b"}


json객체를 array라는 배열에 삽입

array.add(j3); --> [{"j3":"a"}]

array.add(j4); --> [{"j3":"a"},{"j4":"b"}]


array배열을 arr1이라는 key로 arr1 jsonobject에 삽입

arr1.put("arr1",array) 

--> {arr1:[{"j3":"a"},{"j4":"b"}]}


arr1 jsonObject를 j2라는 key로 j2 jsonObject에 삽입

j2.put("j2",arr1);

--> {j2:{"arr1":[{"j3":"a"},{"j4":"b"}]}}


j2 jsonObject를 j1라는 key로 j1 jsonObject에 삽입

j1.put("j1",j2);

--> {"j1":{"j2":{"arr1":[{"j3":"a"},{"j4":"b"}]}}}


이렇게 된다.

역순으로 jsonObject생성해서 배열에 넣고,

그 배열을 jsonobject 생성해서 집어넣고,

그걸 또 jsonObject에 넣는 역순이다.


위 소스를 쉽게쓰면



ObjectNode json1;
ObjectNode json2;
ObjectNode json3;
arrayNode arr = null;

json3 = json.newObject();
json3.put("j3","a");
arr.add(json3);
json3 = json.newObject(); 
/*
여기서 json3은 객체 새로 생성안하면
{"j3":"a", "j4", "b"}가 되고,
객체를 새로 생성하면
{"j4":"b"}가 된다.
초기화 안하면 아래 arr.add에서 
{"j3":"a"},{"j3":"a","j4":"b"} 로 들어가게된다.
*/
json3.put("j4","b");
arr.add(json3);

json3 = json.newObject();
json3.put("arr1",arr);

json2 = json.newObject();
json2.put("j2",json3);

json1 = json.newObject();
json1.put("j1",json2);



이런 식이다. 간단한거 같은데 많이 헷갈린다;;




+ Recent posts