Mintaka's log
JSON, 파싱 본문
JSON이란?
JavaScript Object Notation
- 경량화 되어 있는 하나의 데이터 교환 형식
- 서로 다른 언어들간에 데이터를 주고받을 수 있도록 보다 편리하게 만들어진 텍스트 기반의 형식이라고는 한다…
- 그냥 데이터 표기 방법임.
- 즉,
- 경량의 데이터 교환 포맷
- 간단한 포맷 ( 읽고 쓰기가 쉬움, xml보다 가볍고 빠름.)
- 텍스트 포맷 ( 언어에 독립적으로 프로그래밍 됨)
- 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);
}
}
'etc...' 카테고리의 다른 글
그래서 Rest API가 뭐란 말입니까... (0) | 2022.12.17 |
---|---|
[Spring boot] ajax로 json 데이터 받기 (html, jsp 사용) (0) | 2022.12.01 |
[SpringBoot] ajax로 간단한 값 주고 받기 (0) | 2022.12.01 |
[Github] push시 non-fast-forward 에러 (0) | 2022.11.23 |
[Spring] .properties에 있는값 jsp와 java로 가져오기 (0) | 2022.11.17 |