본문 바로가기
IT/JSON

[JSON] - JSON Jackson 라이브러리 ObjectMapper 클래스(writeValue(), writeValueAsString(), readTree(), readValue()) JsonNode 사용법

by 차이나는 개발자 2022. 6. 28.
728x90
반응형

#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));
		}

	}
}

 

 

 

728x90
반응형

댓글