JSON - JAVA

JSON - JAVA


์•ž์ˆด ๋‹ค๋ค˜๋˜ JSON์„ FrameWork Library๋ฅผ ํ†ตํ•ด JAVA์— ์ ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์‰ฝ๊ฒŒ๋งํ•ด JSON DATA๋ฅผ JAVA domain ๊ฐ์ฒด๋กœ domain ๊ฐ์ฒด๋ฅผ JSON DATA๋กœ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ” ์ค„ ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € JSON์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด JSON์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ›์•„์•ผํ•œ๋‹ค.

JSON-Simple Library๋ฅผ ๋ฐ›์•„ lib๋ฅผ ๋“ฑ๋กํ•˜๋ฉด 2๊ฐ€์ง€์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ JSON-Simple์€ ๋ฐ”์ธ๋”ฉ์„ ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐ”์ธ๋”ฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ค€ CodeHaus ๋ผ๋Š” FrameWork๊ฐ€ ์žˆ๋‹ค.

์ด 2๊ฐ€์ง€ FrameWork๋ฅผ ์•Œ์•„๋ณด์ž

JSON-Simple


ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ JAVA DATA => JSON DATA์œผ๋กœ ํŒŒ์‹ฑํ•˜๋Š” JSONObject์™€ JSONArray๊ฐ€ ์žˆ๊ณ 

JSON DATA๋ฅผ JAVA DATA ๋กœ ํŒŒ์‹ฑํ•˜๋Š” JSONValue๊ฐ€ ์žˆ๋‹ค.

JSONObject

Map๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ put๊ณผ get์„ ์‚ฌ์šฉํ•˜๋ฉฐ {nama : value} ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

    JSONObject jsonObj = new JSONObject();
	jsonObj.put("name", "ํ™๊ธธ๋™");
	jsonObj.put("age", new Integer(1000));
	jsonObj.put("address", "์„œ์šธ");
	// {"address":"์„œ์šธ","age":1000,"name":"ํ™๊ธธ๋™"}
	System.out.println("JSON Object ํ™•์ธ : "+jsonObj);
	
	System.out.println("==>JSON Object Date ์ถ”์ถœ");
	System.out.println(jsonObj.get("address"));

    /* ๊ฒฐ๊ณผ๊ฐ’
    JSON Object ํ™•์ธ : {"address":"์„œ์šธ","name":"ํ™๊ธธ๋™","age":1000}
    ==>JSON Object Date ์ถ”์ถœ
    ์„œ์šธ
    */

JSON์€ String ๋ฐ์ดํ„ฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Map , List , Array ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.


		JSONObject innerJsonObj = new JSONObject();
		innerJsonObj.put("name", "ํ™๊ธธ๋™");
		innerJsonObj.put("age", new Integer(1000));
		innerJsonObj.put("address", "์„œ์šธ");
		jsonObj.put("innerJson", innerJsonObj);
		// {"address":"์„œ์šธ","age":1000,"name":"ํ™๊ธธ๋™",
		//					"innerJson":{"address":"์„œ์šธ","age":1000,"name":"ํ™๊ธธ๋™"}}

		System.out.println("JSON Object ํ™•์ธ : "+jsonObj);
		
		System.out.println("==>JSON Object Date ์ถ”์ถœ");
		System.out.println(jsonObj.get("address"));
		JSONObject returnJsonObj = (JSONObject)jsonObj.get("innerJson");
		System.out.println(returnJsonObj.get("address"));
		
		/* ๊ฒฐ๊ณผ๊ฐ’
        JSON Object ํ™•์ธ : {"address":"์„œ์šธ","name":"ํ™๊ธธ๋™",
                            "innerJson":{"address":"์„œ์šธ","name":"ํ™๊ธธ๋™","age":1000},"age":1000}
        ==>JSON Object Date ์ถ”์ถœ
        ์„œ์šธ
        ์„œ์šธ
        */
		
		
		Map <String, String> map = new HashMap<String, String>();
		map.put("์ง๊ธ‰1", "์‚ฌ์›");
		map.put("์ง๊ธ‰2", "๋Œ€๋ฆฌ");
		map.put("์ง๊ธ‰3", "๊ณผ์žฅ");
		jsonObj.put("career", map);
		//  {"address":"์„œ์šธ","age":1000,"name":"ํ™๊ธธ๋™",
		//					"innerJson":{"address":"์„œ์šธ","age":1000,"name":"ํ™๊ธธ๋™"},
		//					{"career":{"์ง๊ธ‰2":"๋Œ€๋ฆฌ","์ง๊ธ‰3":"๊ณผ์žฅ","์ง๊ธ‰1":"์‚ฌ์›"}}

		System.out.println("JSON Object ํ™•์ธ : "+jsonObj);
		
		System.out.println("==>JSON Object Date ์ถ”์ถœ");
		System.out.println(jsonObj.get("career"));
		Map returnMap = (Map)jsonObj.get("career");
		System.out.println(returnMap.get("์ง๊ธ‰1"));
        
        /* ๊ฒฐ๊ณผ๊ฐ’
        JSON Object ํ™•์ธ : {"career":{"์ง๊ธ‰2":"๋Œ€๋ฆฌ","์ง๊ธ‰3":"๊ณผ์žฅ","์ง๊ธ‰1":"์‚ฌ์›"},
                        "address":"์„œ์šธ","name":"ํ™๊ธธ๋™",
                        "innerJson":{"address":"์„œ์šธ","name":"ํ™๊ธธ๋™","age":1000},"age":1000}
        ==>JSON Object Date ์ถ”์ถœ
        {์ง๊ธ‰2=๋Œ€๋ฆฌ, ์ง๊ธ‰3=๊ณผ์žฅ, ์ง๊ธ‰1=์‚ฌ์›}
        ์‚ฌ์›
        */

JSONArray

์ด๋ฆ„ ๊ทธ๋Œ€๋กœ Array์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ [value, value]์˜ ๊ตฌ์กฐ์ด๋ฉฐ add ์™€ remove๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

		JSONArray jsonArray = new JSONArray();
		jsonArray.add(new Integer(1));
		jsonArray.add("2");
		jsonArray.add("3");
		jsonObj.put("number", jsonArray);
		//Data ์ž…๋ ฅ (CSV) {"address":"์„œ์šธ","age":1000,"name":"ํ™๊ธธ๋™",
		//					"innerJson":{"address":"์„œ์šธ","age":1000,"name":"ํ™๊ธธ๋™"},
		//					{"career":{"์ง๊ธ‰2":"๋Œ€๋ฆฌ","์ง๊ธ‰3":"๊ณผ์žฅ","์ง๊ธ‰1":"์‚ฌ์›"}, "number":[1,"2","3"]}

		System.out.println("JSON Object ํ™•์ธ : "+jsonObj);
		
		System.out.println("==>JSON Object Date ์ถ”์ถœ");
		System.out.println(jsonObj.get("number"));
		JSONArray returnJsonArray = (JSONArray)jsonObj.get("number");
		System.out.println(returnJsonArray.get(0));

        /* ๊ฒฐ๊ณผ๊ฐ’
        JSON Object ํ™•์ธ : {"number":[1,"2","3"],
                        "career":{"์ง๊ธ‰2":"๋Œ€๋ฆฌ","์ง๊ธ‰3":"๊ณผ์žฅ","์ง๊ธ‰1":"์‚ฌ์›"},
                        "address":"์„œ์šธ","name":"ํ™๊ธธ๋™",
                        "innerJson":{"address":"์„œ์šธ","name":"ํ™๊ธธ๋™","age":1000},"age":1000}
        ==>JSON Object Date ์ถ”์ถœ
        [1,"2","3"]
        1
        */

JSONValue

JSON์œผ๋กœ ๋“ค์–ด์˜จ DATA๋ฅผ JAVA์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํŒŒ์‹ฑํ•ด์ค€๋‹ค.

        //JSONValue
		String data = "{\"address\":\"์„œ์šธ\",\"age\":1000,\"name\":\"ํ™๊ธธ๋™\"}";
		JSONObject jsonObj = (JSONObject)JSONValue.parse(data);
		
		System.out.println("JSON Object ํ™•์ธ : "+jsonObj);
		
		System.out.println("==>JSON Object Date ์ถ”์ถœ");
		System.out.println(jsonObj.get("address"));
		System.out.println("\n\n");
        /* ๊ฒฐ๊ณผ๊ฐ’
        JSON Object ํ™•์ธ : {"address":"์„œ์šธ","name":"ํ™๊ธธ๋™","age":1000}
        ==>JSON Object Date ์ถ”์ถœ
        ์„œ์šธ     
        */

		/////////////////////////////////
		//JSONValue Array
		String arrayData = "[\"์„œ์šธ\",1000,\"ํ™๊ธธ๋™\"]";
		JSONArray jsonArray = (JSONArray)JSONValue.parse(arrayData);
		
		System.out.println("JSON Object ํ™•์ธ : "+jsonArray);
		
		System.out.println("==>JSON Object Date ์ถ”์ถœ");
		System.out.println(jsonArray.get(0));
        /*
        JSON Object ํ™•์ธ : ["์„œ์šธ",1000,"ํ™๊ธธ๋™"]
        ==>JSON Object Date ์ถ”์ถœ
        ์„œ์šธ   
        */

CodeHaus


JSON-Simple๊ณผ ๋‹ฌ๋ฆฌ domain๊ฐ์ฒด์™€์˜ ์Œ๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ์„ ์ง€์›ํ•˜๋Š” 3rd party Library์ด๋‹ค.

์Œ๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ์„ ์ง€์›ํ•˜๋Š” ObjectMapper์™€ ํƒ€์ž…์˜ ํ˜•๋ณ€ํ™˜์„ ํ•ด์ฃผ๋Š” TypeReference๊ฐ€ ์žˆ๋‹ค.

CodeHaus๋Š” ๊ณต์‹ํŽ˜์ด์ง€๊ฐ€ ์‚ฌ๋ผ์ ธ ํ˜„์žฌ๋Š” Maven์„ ํ†ตํ•ด์„œ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

OjectMapper

ObjectMapper์—๋Š” Domain => JSON์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” writeValueAsString()์™€

JSON => Domain ์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•ด์ฃผ๋Š” readValue()๊ฐ€ ์žˆ๋‹ค.

    User user = new User("user01", "ํ™๊ธธ๋™", "1111", null, 10);
	
	ObjectMapper objectMapper = new ObjectMapper();
	
	System.out.println("\n\n///////////////////////////////////////");
	System.out.println("1.Domain Object => JSON Value(String) ๋กœ ๋ณ€ํ™˜ ");
	String jsonOneValue = objectMapper.writeValueAsString(user);
	System.out.println(jsonOneValue);
	/* ๊ฒฐ๊ณผ๊ฐ’
    1.Domain Object => JSON Value(String) ๋กœ ๋ณ€ํ™˜ 
    {"userId":"user01","userName":"ํ™๊ธธ๋™","password":"1111","age":null,"grade":10,"regDate":null,"active":false}
    */	
	
	System.out.println("1.JSON Value => Domain Object ๋ณ€ํ™˜ ๋ฐ ๊ฐ’ ์ถ”์ถœ");
	User returnUser = objectMapper.readValue(jsonOneValue, User.class); // JSON Value์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ domain๊ฐ์ฒด
	System.out.println(returnUser);
	System.out.println("userId : "+returnUser.getUserId());

TypeReference

domain๊ฐ์ฒด ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ list์— ๋„ฃ์–ด JSON ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋‹ค์‹œ ๊ฐ๊ฐ domain์— ๋‹ด์•„ list๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.  
domain๊ฐ์ฒด์™€ ๋‹ฌ๋ฆฌ List , Map๊ตฌ์กฐ๋Š” ํ˜•๋ณ€ํ™˜ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผํ•˜๋Š”๋ฐ new TypeReference<Generic>()๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ํ˜•๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    List<User> list = new ArrayList<User>(10);
	list.add(user);
	list.add(new User("user02","ํ™๊ธธ๋™", "2222", null, 20));
	
	System.out.println("2. List<User> => JSON Value(String) ๋กœ ๋ณ€ํ™˜");
	String jsonManyValue =objectMapper.writeValueAsString(list);
	System.out.println(jsonManyValue);
	/* ๊ฒฐ๊ณผ๊ฐ’
    2. List<User> => JSON Value(String) ๋กœ ๋ณ€ํ™˜
    [{"userId":"user01","userName":"ํ™๊ธธ๋™","password":"1111","age":null,"grade":10,"regDate":null,"active":false},{"userId":"user02","userName":"ํ™๊ธธ๋™","password":"2222","age":null,"grade":20,"regDate":null,"active":false}]
    */

	System.out.println("2. JSON Value(String) => List<User> ๋ณ€ํ™˜ ๋ฐ ๊ฐ’ ์ถ”์ถœ");
	List <User> returnList = objectMapper.readValue(jsonManyValue, new TypeReference<List<User>>(){});
	System.out.println(returnList);
	System.out.println(returnList.get(0));
	System.out.println("userId : "+returnList.get(0).getUserId());
    /* ๊ฒฐ๊ณผ๊ฐ’
    2. JSON Value(String) => List<User> ๋ณ€ํ™˜ ๋ฐ ๊ฐ’ ์ถ”์ถœ
    [User [userid=user01, userName=ํ™๊ธธ๋™, password=1111, age=null, grade=10, active=false, regDate=null], User [userid=user02, userName=ํ™๊ธธ๋™, password=2222, age=null, grade=20, active=false, regDate=null]]
    User [userid=user01, userName=ํ™๊ธธ๋™, password=1111, age=null, grade=10, active=false, regDate=null]
    userId : user01
    */

Categories:

Updated:

Leave a comment