2015-01-11 5 views
7

GSON을 사용하여 JSON Object로 변환해야하는 List가 있습니다. 내 JSON 개체에 JSON 배열이 있습니다. 지금 현재로GSON을 사용하여 List를 JSON 객체로 변환하는 방법은 무엇입니까?

public void marshal(Object response) { 

    List<DataResponse.ClientResponse> clientResponse = ((DataResponse) response).getClientResponse(); 

    // now how do I convert clientResponse list to JSON Object which has JSON Array in it using GSON? 

    // String jsonObject = ?? 
} 

, 난 단지 목록에 두 개의 항목이 - - 아래

public class DataResponse { 

    private List<ClientResponse> apps; 

    // getters and setters 

    public static class ClientResponse { 
     private double mean; 
     private double deviation; 
     private int code; 
     private String pack; 
     private int version; 

     // getters and setters 
    } 
} 

내가 JSON의 그것에 배열을 가지고 JSON 개체 내 목록을 변환 할 필요가있는 내 코드입니다 그래서 이런 JSON 객체가 필요합니다. -

{ 
    "apps":[ 
     { 
     "mean":1.2, 
     "deviation":1.3 
     "code":100, 
     "pack":"hello", 
     "version":1 
     }, 
     { 
     "mean":1.5, 
     "deviation":1.1 
     "code":200, 
     "pack":"world", 
     "version":2 
     } 
    ] 
} 

가장 좋은 방법은 무엇입니까?

+1

표시 한 JSON은 JSON 배열이 아니며 JSON 객체입니다. –

+0

죄송합니다. 예, JSON 개체입니다. 질문에 대해 다시 말해 보겠습니다. – AKIWEB

답변

19

marshal 메서드의 responseDataResponse이면 직렬화해야합니다.

Gson gson = new Gson(); 
gson.toJson(response); 

이렇게하면 JSON 출력을 얻을 수 있습니다.

Type listType = new TypeToken<List<String>>() {}.getType(); 
List<String> target = new LinkedList<String>(); 
target.add("blah"); 

Gson gson = new Gson(); 
String json = gson.toJson(target, listType); 
List<String> target2 = gson.fromJson(json, listType); 

당신은 toJson 방법 목록의 유형을 설정하고로 변환 목록 개체를 전달해야합니다 실제로 JSON 문자열 목록을 변환하는 방법에 대한 구글 GSON documentation의 샘플이 있습니다

25

json 문자열 또는 그 반대로.

+0

이것은 불필요하며 요청한 JSON을 생성하지 않습니다. –

+4

이것은 나에게 유일한 유일한 대답입니다. –

3

당신은 또한 당신이 꽤 를 인쇄 할 수 있습니다

{"apps":[{"mean":1.2,"deviation":1.3,"code":100,"pack":"hello","version":1},{"mean":1.5,"deviation":1.1,"code":200,"pack":"world","version":2}]} 

{ 
    "apps": [ 
    { 
     "mean": 1.2, 
     "deviation": 1.3, 
     "code": 100, 
     "pack": "hello", 
     "version": 1 
    }, 
    { 
     "mean": 1.5, 
     "deviation": 1.1, 
     "code": 200, 
     "pack": "world", 
     "version": 2 
    } 
    ] 
} 

대신 형식으로 JSON을 얻고 싶은 가정. 그렇게하려면

Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
String json = gson.toJson(dataResponse); 
관련 문제