코딩마을방범대
SpringBoot에서 JSON 활용하기 본문
728x90
JAVA를 이용한 JSON 데이터 파싱 방법
json 데이터를 활용할 일이 매우 많은데, API에서는 객체로 바로 받아올 수 있지만
json 문자열로 받아와서 사용해야 하는 경우도 많다.
이럴 경우 json 데이터를 여러 방면으로 사용할 수 있는데, 아래에서 확인해보자!
JSON 객체와 문자열
우선 json 객체를 사용하려면 의존성 추가가 필요하다
build.gradle
// https://mvnrepository.com/artifact/org.json/json
implementation group: 'org.json', name: 'json', version: '20230227'
문자열 -> JSON 객체 ( str to json )
Object 로 가져오기
JSONObject jObject = new JSONObject(jsonStr);
Object List 로 가져오기
Object 에서 가져와야함
// {
// "number": [
// {"detCode": "123"},{"detCode": "222"},{"detCode": "333"}
// ]
// }
JSONObject jObject = new JSONObject(jsonStr);
JSONArray arr = jObject.getJSONArray("number");
put을 통해 JSON 객체의 데이터 수정 가능
arr.getJSONObject(0).put("detCode","수정!");
JSON 객체 -> 문자열 ( json to str )
String jsonString = jObject.toString();
문자열과 Map
문자열 -> Map ( str to map )
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<Map<String, Object>> typeReference = new TypeReference<Map<String,Object>>() {};
Map<String, Object> jsonMap = objectMapper.readValue(json, typeReference);
Map -> 문자열 ( map to str )
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(jsonMap);
Object와 문자열
문자열 -> Object ( str to Object )
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonStr, User.class);
Object -> 문자열 ( Object to str )
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(user);
💡 TIPS!
1. Entity의 @GeneratedValue(strategy = GenerationType.IDENTITY)
GenerationType은 DB 툴에 따라 값이 다르며, 설정 시 Auto_Increment가 적용된다.
java.lang.StringBuffer 클래스의 reverse() 메소드를 사용
StringBuffer sb = new StringBuffer(str);
String reverse = sb.reverse().toString()
Java8 버전 이하일 경우
Map<String, Object> map = new HashMap<>() {{
put("name", "dbkim");
put("nickname", "sweetRain");
}};
Java9 버전 이상일 경우
Map<String, Object> map = Map.of(
"name", "dbkim",
"nickname", "sweetRain"
);
변수명.getClass().getName()
참고사이트
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
Autowired를 지양하는 이유 & 정규표현식 (0) | 2023.05.25 |
---|---|
스케쥴러(Scheduler)에 대하여 (1) | 2023.05.25 |
Enum 에 대하여 (1) | 2023.05.25 |
Builder를 사용해야 하는 이유 & 포스트맨의 변수 (0) | 2023.05.25 |
MyBatis 기본 세팅과 활용 (0) | 2023.05.25 |