source

GSON을 사용하여 목록을 JSON 개체로 변환하는 방법

manycodes 2023. 3. 22. 21:42
반응형

GSON을 사용하여 목록을 JSON 개체로 변환하는 방법

GSON을 사용하여 JSON 오브젝트로 변환해야 하는 목록이 있습니다.JSON 오브젝트에 JSON 어레이가 포함되어 있습니다.

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 Array를 탑재한 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 = ??
}

현재 리스트에는 2개의 아이템밖에 없습니다.이렇게 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
      }
   ]
}

어떻게 하면 좋을까요?

목록을 실제로 json 문자열로 변환하는 방법에 대한 Google gson 문서의 샘플이 있습니다.

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);

리스트의 타입을 설정할 필요가 있습니다.toJsonmethod 및 list 객체를 전달하여 json 문자열로 변환하거나 그 반대로 변환합니다.

한다면response당신의 안에서marshalmethod는DataResponse그게 바로 당신이 연재해야 할 내용입니다.

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

그러면 원하는 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
    }
  ]
}

대신

{"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}]}

예쁜 인쇄를 사용할 수 있습니다.그러기 위해서는

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(dataResponse);

컬렉션을 어레이로 변환해 주세요.

Gson().toJson(objectsList.toTypedArray(), Array<CustomObject>::class.java)

먼저 myObject 배열을 만든 후 목록으로 변환하여 다른 회피책을 사용할 수도 있습니다.

final Optional<List<MyObject>> sortInput = Optional.ofNullable(jsonArgument)
                .map(jsonArgument -> GSON.toJson(jsonArgument, ArrayList.class))
                .map(gson -> GSON.fromJson(gson, MyObject[].class))
                .map(myObjectArray -> Arrays.asList(myObjectArray));

베니피트:

  • 여기에서는 반사를 사용하지 않습니다.:)

언급URL : https://stackoverflow.com/questions/27893342/how-to-convert-list-to-a-json-object-using-gson

반응형