[SPRING] Jackson을 사용하여 JSON으로 맵 변환
SPRINGJackson을 사용하여 JSON으로 맵 변환
Jackson을 사용하여 Map을 유효한 JSON으로 변환하려면 어떻게해야합니까?
Spring Boot REST Post 메소드를 통해 Google의 GSON을 사용하고 있습니다 ...
다음은 RESTful 웹 서비스입니다.
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"}
Google의 Gson 대신에 Jackson을 사용하여이 작업을 수행하는 더 좋은 방법이 있습니까? 아니면 내가 잘못된 방향으로 가고 있습니까?
해결법
-
==============================
1.다음과 같이 Jackson을 사용하여 Map을 JSON으로 변환 할 수 있습니다.
다음과 같이 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);
-
==============================
2.대신 Object Mapper를 선호해야합니다. 다음과 같은 링크가 있습니다 : Object Mapper - Obect에서 JSON으로가는 Spring MVC 방식
대신 Object Mapper를 선호해야합니다. 다음과 같은 링크가 있습니다 : Object Mapper - Obect에서 JSON으로가는 Spring MVC 방식
-
==============================
3.jackson을 사용하면 다음과 같이 할 수 있습니다.
jackson을 사용하면 다음과 같이 할 수 있습니다.
ObjectMapper mapper = new ObjectMapper(); String clientFilterJson = ""; try { clientFilterJson = mapper.writeValueAsString(filterSaveModel); } catch (IOException e) { e.printStackTrace(); }
-
==============================
4.jackson을 사용하는 경우 ObjectNode로 직접 변환하는 것이 좋습니다.
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; }
from https://stackoverflow.com/questions/29340383/convert-map-to-json-using-jackson by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트가없는 스프링 데이터 JPA (0) | 2019.03.18 |
---|---|
[SPRING] IntelliJ IDEA에서 Spring 패싯을 구성하는 방법 (0) | 2019.03.18 |
[SPRING] 봄에 jaxb에서 형식화 된 xml 출력을 얻으려면 어떻게해야합니까? (0) | 2019.03.18 |
[SPRING] 스프링에서 freemarker 템플릿으로 요청 문맥을 얻는 법 (0) | 2019.03.18 |
[SPRING] Spring MVC Form tags : "No selection"항목을 추가하는 표준 방법이 있습니까? (0) | 2019.03.18 |