JSON

์ฝœ๋ผ๋ง˜ยท2023๋…„ 7์›” 10์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
11/14
post-thumbnail

๐Ÿ€ JSON

  • JavaScript Object Notation
  • ์–ธ์ œ๋“ ์ง€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด ํ˜•์‹
  • ๋‹ค์–‘ํ•œ ์–ธ์–ด๋“ค์˜ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ์—๋„ ํŽธ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋“ค์˜ ๊ณต์šฉ์–ด๋กœ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‹ค
  • ์†์„ฑ-๊ฐ’ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค
  • ํŠน์ • ์–ธ์–ด์— ์ข…์†๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ณตํ†ต ๊ทœ๊ฒฉ

๐ŸŒผ JSONObject

  • ์ž๋ฐ”์˜ Map์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด
  • ํ•ด๋‹น ๊ฐ์ฒด์— ๊ฐ’๋“ค์„ ์ถ”๊ฐ€ ํ•œ ํ›„์— toJSONString()์„ ํ˜ธ์ถœํ•˜์—ฌ JSON ํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค
  • ์ž๋ฐ”์˜ ๊ธฐ๋ณธ ๋ฐฐ์—ด์€ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค
  • ๋ฐฐ์—ด์„ ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” List(๋˜๋Š” JSONArray)๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค
  • ๊ฐ์ฒด๋ฅผ ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” Map(๋˜๋Š” JSONObject)์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค

๐ŸŒผ JSONParser

  • JSON ํ˜•์‹ ๋ฌธ์ž์—ด์„ JSONObject๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํด๋ž˜์Šค
  • ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ Reader๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

๐Ÿ€ ์ž๋ฐ”์—์„œ JSON์„ ์‚ฌ์šฉํ•˜๊ธฐ

  1. ์˜์กด์„ฑ ์ฃผ์ž…
  • json-simple์—์„œ maven์„ ๋ณต์‚ฌํ•ด์„œ pom.xml์— ๋ถ™์—ฌ๋„ฃ๊ธฐ(์•„๋ž˜๋‚ด์šฉ์„ ๋ถ™์—ฌ๋„ฃ์–ด๋„ ๋จ)
    <dependency>
    	    <groupId>com.googlecode.json-simple</groupId>
    	    <artifactId>json-simple</artifactId>
    	    <version>1.1.1</version>
    </dependency>
  1. JSON ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ
  • ์ž๋ฐ”์˜ Map์„ ๋ฐ”๋กœ JSON ํ˜•ํƒœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋ฐฐ์—ด๋กœ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” List๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
  • ๊ฐ์ฒด ๋‚ด๋ถ€์— ๊ฐ์ฒด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค
public class SimpleJsonTest {
	public static void main(String[] args) {
		//JSON๊ฐ์ฒด ์ƒ์„ฑ
		JSONObject obj = new JSONObject();
		
		obj.put("name", "ํ™๊ธธ๋™");
		obj.put("age", 40);
		// JSON์œผ๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด ์ถœ๋ ฅ
		System.out.println(obj);

		Map<String, Object> map = new HashMap<>();
		List<String> hobbies = new ArrayList<>();
		Map<String, Object> car = new HashMap<>();
		
		car.put("carName", "์Šคํฌํ‹ฐ์ง€");
		car.put("carNumber", "12๊ฐ€3456");
		car.put("carAge", 8);
		
		hobbies.add("๋†๊ตฌ");
		hobbies.add("์•ผ๊ตฌ");
		hobbies.add("๋ฐœ์•ผ๊ตฌ");
		
		map.put("name", "์ž„๊บฝ์ •");
		map.put("phone", "123-1234-1234");
		map.put("age", 33);
		map.put("hobby", hobbies);
		map.put("car", car);
        
		// map์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅ
		System.out.println(new JSONObject(map));
	}

}

๐Ÿ“บ ์ถœ๋ ฅ ๊ฒฐ๊ณผ >>


๐Ÿ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ JSON ์‚ฌ์šฉํ•˜๊ธฐ

๐ŸŒผ JSON.stringify()

JSON.stringify(value);
  • ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค
  • value์—๋Š” ๋ณ€ํ™˜ํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค
  • ์ด ๋ฉ”์„œ๋“œ๋Š” UTF-16์œผ๋กœ ์ธ์ฝ”๋”ฉ๋œ JSONํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค

๐ŸŒผ JSON.parse()

JSON.parse(text);
  • ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค
  • text์—๋Š” ๋ณ€ํ™˜ํ•  ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•œ๋‹ค(text๋Š” ์œ ํšจํ•œ JSONํ˜•์‹์˜ ๋ฌธ์ž์—ด์ด์—ฌ์•ผ ํ•จ)

๐Ÿ€ JSON๊ณผ JavaScript Object์˜ ์ฐจ์ด์ 

  • JavaScript Object๋Š” ๋ฌธ์ž์—ด ๊ฐ’ ๋˜๋Š” key์— ""๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ JSON์€ ๋ฐ˜๋“œ์‹œ ์จ์•ผํ•œ๋‹ค
  • JavaScript Object๋Š” ๋ฌธ์ž์—ด ๊ฐ’ ๋˜๋Š” key์— ''๋ฅผ ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ JSON์€ ""๋งŒ ์จ์•ผํ•œ๋‹ค
  • JSON์€ ๋ฌธ์ž์—ด ํ˜•์‹์˜ ์ด๋ฆ„์ด๊ณ  JavaScript Object๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ธ์Šคํ„ด์Šค์ด๋‹ค

๐Ÿ€ JSON์˜ ํ™œ์šฉ

  • RestController์—์„œ ๋ฐ์ดํ„ฐ application/json ํ˜•์‹์œผ๋กœ ์‘๋‹ตํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค
  • JSON ํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ๋ฐ›์€ ์›น ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ๊ฐ’์„ JavaScript Object๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์š”์ฒญ์‹œ JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด DB์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค (์ž์ฃผ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋‹˜)

๐ŸŒผ Parsing

  • JSON ํ˜•์‹ ๋ฌธ์ž์—ด -> JSONObject๋กœ ๋งŒ๋“ค๊ธฐ
public class SimpleJsonTest {
	
	public static void main(String[] args) {
		JSONParser parser = new JSONParser();
		
		try {
			JSONObject parsed = (JSONObject)parser.parse(
					"{\"fruit\":\"apple\",\"drink\":\"ade\""
					+ "\"flavor\":[3,5,6,11]}");
			
			System.out.println("JSON ๋ฌธ์ž์—ด๋กœ ๊ฐ์ฒด ๋งŒ๋“ค์–ด์„œ ์ž๋ฐ”์—์„œ ํ™œ์šฉํ•˜๊ธฐ");
			System.out.println(parsed.get("fruit"));
			System.out.println(parsed.get("drink"));
			
			List<Integer> flavorNums = (List<Integer>)parsed.get("flavor");
			
			for(int i = 0; i < flavorNums.size(); i++) {
				System.out.println("flavor["+i+"] : " + flavorNums.get(i));
				
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

๐Ÿ“บ ์ถœ๋ ฅ ๊ฒฐ๊ณผ >>


๐Ÿ“š ์ฐธ๊ณ ์ž๋ฃŒ

profile
์ฝœ๋ผ๋ง˜ ์ฝ”๋”ฉ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€