Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Mintaka's log

JSON, 파싱 본문

etc...

JSON, 파싱

_해랑 2022. 12. 2. 19:58

JSON이란?

JavaScript Object Notation

  • 경량화 되어 있는 하나의 데이터 교환 형식
  • 서로 다른 언어들간에 데이터를 주고받을 수 있도록 보다 편리하게 만들어진 텍스트 기반의 형식이라고는 한다…
  • 그냥 데이터 표기 방법임.
  • 즉,
  1. 경량의 데이터 교환 포맷
  2. 간단한 포맷 ( 읽고 쓰기가 쉬움, xml보다 가볍고 빠름.)
  3. 텍스트 포맷 ( 언어에 독립적으로 프로그래밍 됨)
  • key : value 형식이 기본!
{
	"key1" : "value1",
	"key2" : "value2",
	"key3" : "value3"
}

 

하지만 이 value 안에는 string, number, array, object, null, boolean(true, false)가 올 수 있어서 복잡해 질 수도 있다.

이렇게.

{
	"member" : [
            {
                "name" : "gildong",
                "tel" : "01000002222",
                "gender" : "male",
                "email" : "abc@gmail.com"
            },
            {
                "name" : "hong",
                "tel" : "01029384756",
                "gender" : "female",
                "email" : "def@gmail.com"
            }
	]
}

이 json은 key가 member,

그 key에 해당하는 value에 배열이 들어있고,

그 배열 안에는 두개의 object가 있는데 각각 4개의 key : value를 가지고 있음.

 


파싱

다른 형식으로 저장된 데이터를 원하는 형식의 데이터로 변환하는 것을 말함.

따라서 json 파싱이란, json 형식의 문자열을 객체로 변환하는 것을 의미함.

  • 자바에서는 json을 다루기 위해 json-simple, gson, jackson 이라는 라이브러리 사용이 가능한데, 여기서는 json-simple을 사용함.

 

1. json이 단순한 key : value일 경우 파싱하기

{
	member1 : {
				name : gildong,
				email : abc@gmail.com
				tel : 01023456789
			  },
	member2 : {
				name : hong,
				email : def@gmail.com
				tel : 01098765432
			  },
			  
}

위와 같은 json의 경우

import org.json.JSONObject;

public class JsonParsing {
	public static void main(String[] args) {
		String jsonEx = 
				"{"
						+ "\"member1\":{"
							+ "\"name\":\"gildong\","
							+ "\"email\":\"abc@gmail.com\","
							+ "\"tel\":\"01023456789\""
						+ "},"
						+ "\"member2\":{"
							+ "\"name\":\"hong\","
							+ "\"email\":\"def@gmail.com\","
							+ "\"tel\":\"01098765432\""
						+ "}"
				+ "}";
		
		JSONObject jObject = new JSONObject(jsonEx);
		
		JSONObject js1 = jObject.getJSONObject("member1");
		String name1 = js1.getString("name");
		String email1 = js1.getString("email");
		String tel1 = js1.getString("tel");
		
		JSONObject js2 = jObject.getJSONObject("member2");
		String name2 = js2.getString("name");
		String email2 = js2.getString("email");
		String tel2 = js2.getString("tel");
		
		System.out.println("name : " + name1);
		System.out.println("email : " + email1);
		System.out.println("tel : " + tel1);
		
	}
	
}

위와 같은 방식으로 json을 생성하고 파싱할 수 있음.

 

 

2. 배열 포함 json일 경우 파싱

{
	member : [
    			{
                    name : gildong,
                    email : abc@gmail.com
                    tel : 01023456789
			 	 },
				{
                    name : hong,
                    email : def@gmail.com
                    tel : 01098765432
			  	}
             ]
			  
}

위와 같은 json일 경우

import org.json.JSONObject;
import org.json.JSONArray;

public class JsonParsing {
	public static void main(String[] args) {
		String jsonEx = 
				"{"
						+ "\"member\":["
							+"{"
								+ "\"name\":\"gildong\","
								+ "\"email\":\"abc@gmail.com\","
								+ "\"tel\":\"01023456789\""
							+ "},"
							+ "{"
								+ "\"name\":\"hong\","
								+ "\"email\":\"def@gmail.com\","
								+ "\"tel\":\"01098765432\""
							+"}"
						+ "]"
				+ "}";
		
		JSONObject jObject = new JSONObject(jsonEx);
		JSONArray jArray = jObject.getJSONArray("member");
		
		for(int i = 0; i < jArray.length(); i++) {
			JSONObject j1 = jArray.getJSONObject(i);
			String name = j1.getString("name");
			String email = j1.getString("email");
			String tel = j1.getString("tel");

			System.out.println("name : " + name);
			System.out.println("email : " + email);
			System.out.println("tel : " + tel);
		}
		
		
	}