기록

spring프로젝트_0908

coolcode 2022. 9. 8. 10:20

ajax로 데이터 송수신(json활용)

JSON.stringify() / JSON.parse() 차이

이미지 참조 https://velog.io/@junsj119/spring-%ED%98%BC%EC%9E%90%EB%B3%B4%EB%8A%94-MVC%EC%B0%B8%EA%B3%A0%ED%91%9C%EA%B0%9D%EC%B2%B4-%EB%B0%94%EC%9D%B8%EB%94%A9-%EB%B0%A9%EB%B2%95-3%EA%B0%80%EC%A7%80

-----------------------------------------------------------------------------------------------------------------------------------------------------------

** java 에서 json 다루는 방법 (Gson라이브러리)

Gson :: java에서 json을 파싱/생성하기 위해 사용되는 구글의 오픈 소스 ( java object  > json / json 문자열 > java object )

1) Gson 라이브러리 추가 (pom.xml_maven)

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

2) Gson 객체 생성

// Json문자열로 변환할 java 객체 생성
Member member = new member("mem1", "1234");
// new 로 Gson 객체 생성
Gson gson1 = new Gson();         

// GsonBuilder 로 Gson 객체 생성       
Gson gson2 = new GsonBuilder().create();        
Gson gson3 = new GsonBuilder().setPrettyPrinting().create();

** new GsonBuilder()로 Gson 객체를 만들면
   setPrettyPrinting()와 같은 옵션을 추가해서 객체를 생성할 수 있음

// Member 객체 -> Json 문자열        
String memebrJson = gson.toJson(member);         
// Json 문자열 출력 (줄바꿈이 적용되어 가독성있게 출력됨)        
System.out.println(memberJson);
{  
    "id": 1,  
    "name": "Anna"
}

3) Json 객체 생성

Gson gson = new Gson();        

// Json key, value 추가        
JsonObject jo = new JsonObject();        
jo.addProperty("id", "mem1");        
jo.addProperty("pw", "1234");         
**jo라는 Json객체에 프로퍼티를 추가함

// JsonObject를 Json 문자열로 변환        
String jsonStr = gson.toJson(jo);

// 생성된 Json 문자열 출력        
System.out.println(jsonStr); // {"id":"mem1","pw":"1234"}

4) java 클래스 객체 > Json 변환

매개변수 있는 형태의 생성자로 객체 생성 > Gson객체 생성  > 클래스 객체를 json문자열로 변환

// member객체 생성
Member member = new member("mem1","1234");
// Gson객체 생성
Gson gson = new Gson();

// member 객체 -> Json 문자열 (Json 객체생성)        
Member memberJson = gson.toJson(member);  
// map -> Json 문자열도 동일한 방법이고 member 대신 map을 인자로 전달하면 됨
Member memberJson = gson.toJson(map);

// Json 문자열 출력        
System.out.println(memberJson);  // {"id":"mem1","pw":"1234"}

5) Json 문자열 > java 클래스 객체 변환

Json 문자열 변수에 담기 > Gson 객체 생성 > Json 문자열 java 객체로 변환 > java 객체 toString() 출력

// Json 문자열
String jsonStr = "{\"id\":\"mem1\",\"pw\":\"1234\"}";
// Gson 객체 생성
Gson gson = new Gson();

// Json 문자열 > Member 객체
Member meber = gson.fromJson(jsonStr, Member.class);
// Member 객체 toString() 출력
 System.out.println(member); // Member [id=mem1, pw=1234]

6) Json 문자열  > Map 변환

Json 문자열 변수에 담기 > Gson 객체 생성 > Json 문자열 Map 으로 변환 > Map 출력

// Json 문자열
		String jsonStr = "{\"id\":\"mem1\",\"pw\":\"1234\"}";
		// Gson 객체 생성
		Gson gson = new Gson();

		// Json 문자열 > Map
		Map<String, Object> map = gson.fromJson(jsonStr, Map.class);
		// Map 출력
		 	for(Map.Entry<String, Object> entry : map.entrySet()) {
		 		System.out.println("@@");
		 		System.out.println(entry);
		 		System.out.println(entry.getKey());
		 		System.out.println(entry.getValue());
                
		 		System.out.println("1");
		 		System.out.println(map);
		 		System.out.println(map.entrySet());
                
		 		System.out.println("2");
		  		System.out.println(entry.getKey() + "=>" + entry.getValue());
		  		System.out.println("3");
 
/* 

@@
id=mem1
id
mem1
1
{id=mem1, pw=1234} // map형태
[id=mem1, pw=1234] // map.entrySet형태
2
id=>mem1  // entry.getKey()의 첫번째 key-value묶음
3
------------------------------------(key-value쌍만큼 반복)
@@
pw=1234
pw
1234
1
{id=mem1, pw=1234}
[id=mem1, pw=1234]
2
pw=>1234  // entry.getKey()의 두번째 key-value묶음
3

*/

*** map :: key를 value에 매핑하는 인터페이스 개체이며 key는 중복값을 가질 수 없음 /  map 인터페이스는 Dictionary 클래스를 대체함. map의 순서는 map의 컬렉션 뷰에 있는 반복자가 요소를 반환하는 순서로 정의됨. (hashMap 순서 없음/ treeMap 순서 존재함)

참고 https://hianna.tistory.com/629

 

[Java] Gson 라이브러리 사용법 및 예제 ( Json 생성, 변환 )

이번에는 Gson 라이브러리로, Java에서 Json을 다루는 방법을 알아보도록 하겠습니다. Gson은 Gson 라이브러리 추가하기 Gson 객체 생성하기 Json 생성하기 Object -> Json 변환하기 Json -> Object 변환하기 Map..

hianna.tistory.com