2012-06-25 4 views
1

GSON을 사용하여 몇 가지 질문이 있습니다. 내가 나중에 사용할 수있는 JSON 객체를 줄 수있는 라이브러리 측면에서 GSON을 찾지 못했을 것이라고 생각합니다.GSON - Java에서 JSON 트리 구조 만들기

데이터베이스에서 데이터를 읽으면 나중에 사용할 json 개체를 채 웁니다. json 객체의 출력은 부모와 자식을 포함하는 아래 json과 비슷하게 보입니다. 내가 계층 구조의 유형이 JSON으로 직렬화 할 수있는, 내가 GSON 개체를 만들려면 어떻게해야합니까

var json = { 
     id: "1", 
     name: "Joe Smith", 
     data: { 
     "email": "", 
     "phone": "123-123-1233"}, 
     children: [{ 
         id: "Tim Anderson", 
         name: "Tim Anderson", 
         data: { 
          "email": "[email protected]", 
          "phone": "123-123-1233" 
         }, 
         children: [] 
        },{ 
         id: "Christopher Johnson", 
         name: "Christopher Johnson", 
         data: { 
          "email": "[email protected]", 
          "phone": "123-123-1233" 
         }, 
         children: [] 
        },{ 
         id: "Kate Green", 
         name: "Kate Green", 
         data: { 

         }, 
         children: [{ 
          id: "Gary Jones", 
          name: "Gary Jones", 
          data: {}, 
          children: [] 
         }, { 
          id: "Melissa Brand", 
          name: "Melissa Brand", 
          data: {}, 
          children: [] 
         }] 
        } 
        ] 
    } 

, 위의 구조와 유사 : 그것은 작은 나무 기반 구조를 형성? 나는지도와 다른 콜렉션을 사용해 보았습니다. 그러나 원하는 결과를 얻는데 어려움을 겪고 있습니다. 따라서 GSON이 JSON 직렬화에 정말로 필요한 것인지 묻는 이유는 무엇입니까?

답변

2

은 내가 당신에게 힌트

을주게 만드는 기본 자바 JSONTokener 및 기타 유사한 파서를 시도이

Person 
    String id 
    String name 
    Data data 
    List<Person> children 

Data 
    String email 
    String phone 
+1

고마워요 - 내가 POJO 개체를 사용하여 트리의 노드 인스턴스를 만들 수 있습니다. GSON 직렬화에서이 오브젝트를 문제없이 사용할 수 있습니까? – user82302124

+0

@ K82_Med 예. 둘 다 직렬화 및 비 직렬화에 사용할 수 있습니다. – Nishant

+0

고마워요 - 저는 당신의 대답 덕분에 어디로 가고 있는지 생각해 왔습니다. 팁 고마워. – user82302124

2

같은 사람과 데이터 클래스 (POJO)?

JSONArray children=finalJson.getJSONArray("children"); 
for(int i = 0;i<children.length;i++){ 
JSONObject childRecData = children.getJSONObject(i); //returns the ith JSONObject containing id, name, data, etc. 
int id = childRecData.getString(); 
String name = childRecData.getString(); 
JSONObject data = childRecData.getJSONObject(0); 
} 

참고을 다음과 같이 경우

 BufferedReader reader = new BufferedReader(new FileReader("jsonfile.json")); 
    StringBuilder builder=new StringBuilder(); 
    for(String line=null;(line = reader.readLine()) != null;){ 
    builder.append(line).append("\n"); 
    } 
    JSONTokener jsonTokener=new JSONTokener(builder.toString()); 
    JSONObject finalJson=new JSONObject(jsonTokener); 

당신은 내부의 계층에서 추가 데이터를 찾으려면

후 이상 을 반복 그건 말도 안되는 수치가 큰 JSON 파일 (파일 계층 구조) HTTP 요청과 같은 GSON의 POJO (Plain Old Java Objects) 모델을 권장합니다.

여기에 more information

여기 있었어 similar question