programing

Jackson을 사용하여 맵을 JSON으로 변환

lovejava 2023. 2. 23. 21:57

Jackson을 사용하여 맵을 JSON으로 변환

Jackson을 사용하여 Map을 유효한 JSON으로 변환하려면 어떻게 해야 합니까?

Spring Boot REST POST 방식으로 Google의 GSON을 사용하여 하고 있습니다.

RESTful Web Service는 다음과 같습니다.

import java.util.Map;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.google.gson.Gson;

@RestController
@RequestMapping("/myservice")
public class ValidationService {    

    @RequestMapping(value="/validate", method = RequestMethod.POST)
    public void validate(@RequestBody Map<String, Object> payload) throws Exception {
        Gson gson = new Gson();
        String json = gson.toJson(payload); 
        System.out.println(json);
    }
}

이 명령어를 사용하여 호출하면 다음과 같이 됩니다.

curl -H "Accept: application/json" -H "Content-type: application/json" \
-X POST -d '{"name":"value"}' http://localhost:8080/myservice/validate

stdout에 다음 정보를 수신합니다(이것이 바로 제가 원하는 것입니다).

{"name":"value"}

구글의 Gson이 아닌 Jackson을 사용하여 이 작업을 수행할 수 있는 더 나은 방법은 없을까? 아니면 제가 완전히 잘못된 방향으로 진행 중인 것일까요?

변환할 수 있습니다.Map로.JSON다음과 같이 잭슨을 사용합니다.

Map<String,String> payload = new HashMap<>();
payload.put("key1","value1");
payload.put("key2","value2");

String json = new ObjectMapper().writeValueAsString(payload);
System.out.println(json);

Jackson을 사용하면 다음과 같이 할 수 있습니다.

    ObjectMapper mapper = new ObjectMapper();
    String clientFilterJson = "";
    try {
        clientFilterJson = mapper.writeValueAsString(filterSaveModel);
    } catch (IOException e) {
        e.printStackTrace();
    }

대신 오브젝트 맵퍼를 사용하는 것이 좋습니다.다음은 동일한 링크입니다.Obect to JSON의 오브젝트매퍼 - Spring MVC 방식

Jackson을 사용하는 경우 ObjectNode로 직접 변환하는 것이 좋습니다.

//not including SerializationFeatures for brevity
static final ObjectMapper mapper = new ObjectMapper();

//pass it your payload
public static ObjectNode convObjToONode(Object o) {
    StringWriter stringify = new StringWriter();
    ObjectNode objToONode = null;

    try {
        mapper.writeValue(stringify, o);
        objToONode = (ObjectNode) mapper.readTree(stringify.toString());
    } catch (IOException e) {
        e.printStackTrace();
    }

    System.out.println(objToONode);
    return objToONode;
}

언급URL : https://stackoverflow.com/questions/29340383/convert-map-to-json-using-jackson