JSON 변환하기 (Gson , json-simple)

2021. 11. 29. 19:43스프링부트

 

1. Gson 라이브러리로 변환하기

2. json-simple 라이브러리로 변환하기

 

 

 

1. Gson 

 

maven 라이브러리 추가

<dependency>
	<groupId>com.google.code.gson</groupId>
	<artifactId>gson</artifactId>
</dependency>

 

변환할 클래스

class Student {
	String name;
	int age;
	
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
}

 

 

객체를 제이슨 문자열로 변환하기

public class JSONTest {
	
	@Test
	public void jsonTest() {
		Student s1 = new Student("침착맨", 10);
		Student s2 = new Student("이말년", 20);
		Student s3 = new Student("이병건", 30);
		
		Gson gson  = new Gson();
		
		// 객체를 제이슨 문자열로 변환
		String s1Json = gson.toJson(s1);
		
		System.out.println("변환 전 = " + s1);
		System.out.println("변환 후 = " + s1Json);
		
//		결과
//		변환 전 = Student [name=침착맨, age=10]
//		변환 후 = {"name":"침착맨","age":10}
	}

}

 

 

제이슨 문자열을 오브젝트로 변환하기

public class JSONTest {
	
	@Test
	public void jsonTest() {
		Student s1 = new Student("침착맨", 10);
		Student s2 = new Student("이말년", 20);
		Student s3 = new Student("이병건", 30);
		
		Gson gson  = new Gson();
		
		// 객체를 제이슨 문자열로 변환
		String s1Json = gson.toJson(s1);
		
		// gson.fromJson()의 첫번째인자에 변환하고 싶은 값, 두번째 인자에 변환할 타입을 써주면 된다
		Map<String, Object> map =  gson.fromJson(s1Json, Map.class);
		
		Student student = gson.fromJson(s1Json, Student.class); 
		
		System.out.println("변환 전 = " + s1);
		System.out.println("map으로 변환 = " + map);
		System.out.println("객체로 변환 = " + student);
		
//		결과
//		변환 전 = Student [name=침착맨, age=10]
//		map으로 변환 = {name=침착맨, age=10.0} map으로 변환될땐 실수형으로 변환된다
//		객체로 변환 = Student [name=침착맨, age=10]
	}

}

 

 

제이슨 배열을 오브젝트로 변환하기

public class JSONTest {
	
	@Test
	public void jsonTest() {
		Student s1 = new Student("침착맨", 10);
		Student s2 = new Student("이말년", 20);
		Student s3 = new Student("이병건", 30);
		
		Gson gson  = new Gson();
		
		// 객체를 제이슨 문자열로 변환
		String s1Json = gson.toJson(s1);
		String s2Json = gson.toJson(s2);
		String s3Json = gson.toJson(s3);
		
		List<String> jsonList = new ArrayList<>();
		
		jsonList.add(s1Json);
		jsonList.add(s2Json);
		jsonList.add(s3Json);
		
		
		String listJson = gson.toJson(jsonList);
		
		System.out.println("list = " + jsonList);
		System.out.println("제이슨배열 문자열 = " + listJson);
//		결과		
//		list = [{"name":"침착맨","age":10}, {"name":"이말년","age":20}, {"name":"이병건","age":30}]
//		제이슨배열 문자열 = ["{\"name\":\"침착맨\",\"age\":10}","{\"name\":\"이말년\",\"age\":20}","{\"name\":\"이병건\",\"age\":30}"]
		
		
		List<String> list = gson.fromJson(listJson, List.class);
		
		System.out.println("제이슨 배열 => List로 변환");
		System.out.println(list);
//		제이슨 배열 => List로 변환
//		[{"name":"침착맨","age":10}, {"name":"이말년","age":20}, {"name":"이병건","age":30}]
		
		

		for(int i=0;i<list.size();i++) {
			Student s = gson.fromJson(list.get(i), Student.class);
			System.out.println(s);
		}
//		Student [name=침착맨, age=10]
//		Student [name=이말년, age=20]
//		Student [name=이병건, age=30]
	}

}

 

 

 

2. json-simple