Programming/Spring

[Spring/Java/Jackson] JSON List를 문자열(String)으로 변환

예민한고라니 2022. 7. 31. 00:35

문제의 발단

API 개발 중 다음과 같은 JSON을 받아와 파싱하여, 그중 JSON List 인 runningData 전체를 문자열(String)으로 저장할 필요가 생겼다.

파싱과 관련된 자세한 내용을 보고싶다면 여기를 클릭하세요!

 

{ 
	"userId" : long(아이디번호) , 
	"runningId" :long(아이디번호) , 
	"duration" : int(지속시간),
	"runningData" : [ 
	{
		"latitude" : double(경도),
		"longitude" : double(위도),
		"altitude" : double(고도),
		"speed": double(속도),
		"timestamp" : DateTime(시간)
	},{ … }
    ]
}

 

여기서는 Java가 json을 편리하게 다룰수 있도록 도와주는 Jackson 라이브러리를 사용했다

 

소스 코드 (runningService.class)

  • 그저 간단하게 ObjectMapper 객체를 하나 만들어주고, writeValueAsString 메소드를 사용하면 된다.
  • 이때 해당 메소드와 해당 메소드를 참조하는 모든 메소드에 JsonProcessingException 예외를 던져주어야한다.
  @Transactional
    public void finishRunning(long runningId, long memberId, List<RunningRowData> rowData) throws JsonProcessingException {

        Running running = runningRepository.findOne(runningId);
        Member member = memberRepository.findOne(memberId);

        ObjectMapper mapper = new ObjectMapper();
        running.setRowData(mapper.writeValueAsString(rowData));
    }