2012-09-24 3 views
3

나는 List<Person> 목록이 있습니다. Jackson Api를 사용하여 JSON에 다른 속성으로 직렬화하려고합니다. 아주 간단한 아마Jackson을 사용하여 JSON 만들기

{ 
    "sEcho": 3, 
    "iTotalRecords": 10, 
    "iTotalDisplayRecords": 10, 
    "aaData": [ <--here's the persons 
     { 
      "name": "TestName1", 
      "status": "ok" 

     }, 
     { 
      "name": "TestName2", 
      "status": "ok" 
     }, 
    ... 
    ] 
} 

하지만 잭슨의 API에서 그것을 이해할 수 없었다 :

출력은 다음과 같이해야한다. 감사합니다

답변

3

이 클래스의 다른 필드로 List와 함께 필요한 추가 필드가있는 PersonGroup이라는 새 클래스를 만듭니다. 예를 들어이 필드의 이름을 aaData로 지정했습니다.

이것은 여기에있는 구조를 나타냅니다. 새로운 클래스가 너무 많다면 Object의 HashMap을 만들고 원하는 필드에 추가 필드를 저장 한 다음이를 HashMap에 추가하여 키가 추가 필드의 이름과 일치하는지 확인한 다음 귀하의 목록은 또한 HashMap에 있습니다.

이 클래스 또는 HashMap을 비 직렬화하면 사용자가 언급 한 결과를 반환해야합니다.

+0

다른 제안을 기다리고 있습니다. 감사 – braincell

0

함께 시도해보십시오. 도움이 되길 바랍니다.

import java.util.ArrayList; 
import java.util.List; 

import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 

public class JsonSimpleExample { 
    public static void main(String[] args) { 

     List<Person> personList = new ArrayList<Person>(); 

     for(int i=0 ;i< 5;i ++) { 

      Person person = new Person("TestName" + (i+1), "OK"); 
      personList.add(person); 
     } 

     JSONObject obj = new JSONObject(); 
     obj.put("sEcho", 3); 
     obj.put("iTotalRecords", 10); 
     obj.put("iTotalDisplayRecords", 10); 

     JSONArray list = new JSONArray(); 

     for (Person person : personList) { 
      JSONObject innerObj = new JSONObject(); 
      innerObj.put("name",person.getName()); 
      innerObj.put("status",person.getStatus()); 
      list.add(innerObj); 
     } 
     obj.put("aaData", list); 

     System.out.print(obj); 
    } 
} 
class Person { 
    private String name; 
    private String status; 

    public Person(String name, String status) { 
     this.name = name; 
     this.status = status; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getStatus() { 
     return status; 
    } 
    public void setStatus(String status) { 
     this.status = status; 
    } 
} 
관련 문제