#JSON Jackson 라이브러리 ObjectMapper 클래스(writeValue(), writeValueAsString(), readTree(), readValue()) JsonNode사용법
-JSON jackson 라이브러리를 사용하려면 pom.xml파일에 의존성을 추가해야합니다.
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency>
#자바 객체를 JSON 형식으로 변환하는 방법입니다.
(Java Object to JSON)
-writeValue(변환할 JSON형식 파일, 변환할 객체): Java 객체를 JSON 형식으로 직렬화 할 수 있습니다 .
-writeValueAsString(변환할 객체): Java 객체를 JSON 형식으로 변환할 수 있습니다.
-ObjectMapperTest.java
public class ObjectMapperTest {
public static void main(String[] args) {
ObjectMapper objectMapper = new ObjectMapper();
Member member = new Member();
member.setName("jack");
member.setAge("30");
member.setPhoneNumber("010-1234-5678");
try {
// Member객체에 저장되어 있는 값을 JSON형식으로 변환 후 member.json파일을 생성합니다.
objectMapper.writeValue(new File("member.json"), member);
// Member객체에 저장되어 있는 값을 JSON형식으로 변환합니다.
String memberInfo = objectMapper.writeValueAsString(member);
System.out.println(memberInfo);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
-Member.java
@Data
public class Member {
private String name;
private String age;
private String phoneNumber;
}
-ObjectMapper.writeValue()메서드를 사용해서 생성한 member.json 파일입니다.
#JSON 형식을 자바 객체로 변환하는 방법입니다.
(JSON to Java Object)
-readValue(변환할 JSON형식, 변환할 타입): JSON 형식을 Java 객체로 역직렬화 할 수 있습니다 .
public class ObjectMapperTest2 {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String jsonData = "{ \"name\" : \"jack\", \"age\" : \"30\", \"phoneNumber\" : \"010-1234-5678\" }";
ObjectMapper objectMapper = new ObjectMapper();
// JSON -> Object
// jsonData의 JSON 데이터를 읽어서 Member 객체에 역직렬화했습니다.
Member member = objectMapper.readValue(jsonData, Member.class);
// Member(name=jack, age=30, phoneNumber=010-1234-5678)
System.out.println(member.toString());
// JSON File to Object
// member.json 파일의 JSON 데이터를 읽어서 Member 객체에 역직렬화했습니다.
Member member2 = objectMapper.readValue(new File("member.json"), Member.class);
// Member(name=jack, age=30, phoneNumber=010-1234-5678)
System.out.println(member2.toString());
// JSON URL to Object
// file:member.json URL에서 JSON 데이터를 읽어서 Member 객체에 역직렬화했습니다.
Member member3 = objectMapper.readValue(new URL("file:member.json"), Member.class);
// Member(name=jack, age=30, phoneNumber=010-1234-5678)
System.out.println(member3.toString());
}
}
#JSON 형식을 Jackson JsonNode로 변환하는 방법입니다.
(JSON to Jackson JsonNode)
-값을 추가할 수 없는 불변의 객체(객체 생성 안해도 됩니다.)
-readTree(변환할 JSON형식): JSON 형식을 JsonNode 오브젝트로 파싱한 뒤 특정한 노드로부터 데이터를 회수하여 사용할 수 있습니다.
public class ObjectMapperTest3 {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String jsonData = "{ \"name\" : \"jack\", \"age\" : \"30\", \"phoneNumber\" : \"010-1234-5678\" }";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonData);
// get()메소드를 사용해서 key 값으로 value값을 가져올 수 있습니다.
// String 타입 = asText(), int 타입 = asInt();
String name = jsonNode.get("name").asText();
// 출력: jack
System.out.println(name);
}
}
#JSON 형식 배열을 자바 List 타입으로 변환하는 방법입니다.
(JSON Array String to List)
public class ObjectMapperTest4 {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String jsonDataArray = "[{ \"name\" : \"jack\", \"age\" : \"30\", \"phoneNumber\" : \"010-1234-5678\" }, "
+ "{ \"name\" : \"jack2\", \"age\" : \"32\", \"phoneNumber\" : \"010-2222-3333\" }]";
ObjectMapper objectMapper = new ObjectMapper();
// JSON 형식의 배열 데이터를 List 타입으로 변환하였습니다.
List<Member> memberList = objectMapper.readValue(jsonDataArray, new TypeReference<List<Member>>() {
});
// Member(name=jack, age=30, phoneNumber=010-1234-5678)
// Member(name=jack2, age=32, phoneNumber=010-2222-3333)
for(int i=0; i<memberList.size(); i++){
System.out.println(memberList.get(i).toString());
}
}
}
#JSON 형식을 자바 Map 타입으로 변환하는 방법입니다.
(JSON String to Map)
public class ObjectMapperTest5 {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String jsonData = "{ \"name\" : \"jack\", \"age\" : \"30\", \"phoneNumber\" : \"010-1234-5678\" }";
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = objectMapper.readValue(jsonData, new TypeReference<HashMap<String, Object>>() {
});
// phoneNumber : 010-1234-5678
// name : jack
// age : 30
Iterator<String> keys = map.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
System.out.println(key + " : " + map.get(key));
}
}
}
'IT > JSON' 카테고리의 다른 글
[JSON] - JSON Jackson 라이브러리 주요 어노테이션(Annotation) 사용법 (0) | 2022.06.28 |
---|---|
[JSON] - JSON json-simple 라이브러리(JSONObject, JSONArray, JSONParser) 사용법 (0) | 2022.06.28 |
[JSON] - JSON 라이브러리 종류(Jackson, json-simple) 및 설명 (0) | 2022.06.28 |
댓글