9-2. JSON
XML
- 데이터 값 양쪽으로 태그가 있다.
- ex. XML (사람표현)
- XML문서의 단점 =>
실제데이터 : a,1,책 (5byte)면 되는데 문서부분(person~전체)
부수적인 내용 용량이 크다
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>a</name>
<age> 1 </age>
<hobby> 책 </hobby>
</person>
JSON
- JavaScript Object Notation
- 요즘 많이 사용하는 문서 표기 방법
- 경량(가벼운)의 DATA-교환방식
- 데이터 형식, 문자열 형태
- 각 프로그래밍 언어들은 표준에 맞게 JSON을 파싱, 직렬화 가능
- 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이
JSON 기본구조
- JavaScript Object 형식으로 표현된 String
- object는 name / value 형태의 쌍으로 collection 타입
- object는 { name : value,... } 표현
- JSON에서 value값으로 가능한 데이터 타입
- String, number(long타입), object(JSONObject), array, boolean, null
JSON 기본 자료형
1.수(Number)
- 8진수와 16진수를 표현하는 방법은 지원되지 않는다.
- 정수, 실수
2.문자열(String)
- 문자열은 큰 따옴표(")로 구분, 역슬래시 이스케이스 문법 지원
- 유니코드 문자들
"1234" "Love" "O-matic" "한글" "\"JSON\""
3.참/거짓(Boolean)
- true 또는 false 값
4.배열(Array)
- 0이상의 임의의 종류의 값으로 이루어진 순서가 있는 리스트.
- 대괄호로 나타내며 요소는 쉼표로 구분한다.
singerList":[{"gender":"남자","name":"개리","age":33},{"gender":"여자","name":"비욘세","age":35},{"gender":"남자","name":"마이클잭슨","age":55}]
[10, {"v": 20}, [30, "마흔"]]
5.객체(Object)
- 이름/값 쌍의 집합 중괄호{}를 사용, 문자열이기때문에 반드시 따옴표 ""
- 각 쌍들은 쉼표(,)로 구별 , 각쌍이 나오는 순서는 의미가 없다
{"name2": 50, "name3": "값3", "name1": true}
6.null
static Methods
- JSON.parse(text[,reviver])
- Parse the string text as JSON
- JSON.stringify(value[,replacer[,space]])
- Return a JSON string corresponding to the specified value
- all instances of undefined are replaced with null
parsing을 위해 json-simple-1.1.1jar 필요
예제 11.JasonTest / A_JsonSimpleWriterTest.java
public class A_JsonSimpleWriterTest {
public static void main(String[] args) throws IOException {
//JSON 데이터 생성
JSONObject jsonObj = new JSONObject();
//값 넣기
jsonObj.put("name", "오혁");
jsonObj.put("job", "가수");
jsonObj.put("age", 28);
jsonObj.put("addr", "서울 마포구 연남동");
//JSONArray 데이터 생성
JSONArray singerList = new JSONArray();
JSONObject singer = new JSONObject();
singer.put("name", "개리");
singer.put("gender", "남자");
singer.put("age", 33);
singerList.add(singer);
singer = new JSONObject();
singer.put("name", "비욘세");
singer.put("gender", "여자");
singer.put("age", 35);
singerList.add(singer);
singer = new JSONObject();
singer.put("name", "마이클잭슨");
singer.put("gender", "남자");
singer.put("age", 55);
singerList.add(singer);
jsonObj.put("singerList", singerList);
FileWriter fw = new FileWriter("d:/d_Other/myJsonFile.txt");
fw.write(jsonObj.toString()); // number타입도 포함되서 문자열로 변환 toString()
fw.flush();
fw.close();
}
}
- FIleWriter할때 경로지정 (d:/d_Other/myJsonFile.txt) 텍스트 파일 생성
예제 11.JasonTest / A_JsonSimpleReadTest.java
public class A_JsonSimpleReadTest {
public static void main(String[] args) throws IOException, ParseException {
// Json 읽어오기
// d:/D_Other/myJsonFile.txt => JSON데이터
FileReader fr = new FileReader("d:/D_Other/myJsonFile.txt");
JSONParser parser = new JSONParser();
// fr(JSON 데이터) parse 부분
Object obj = parser.parse(fr);
//obj에 담긴 parse한 JSON데이터를 JSONObject로 만들어준다.
JSONObject jsonFile = (JSONObject) obj;
//name : value => name이 "name", "job", "age", "addr"인 vlaue값 get
String name = (String) jsonFile.get("name");
String job = (String) jsonFile.get("job");
long age = (long) jsonFile.get("age"); // number은 long타입
String addr = (String) jsonFile.get("addr");
System.out.println("name : "+ name);
System.out.println("job : "+ job);
System.out.println("age : "+ age);
System.out.println("addr : "+ addr);
JSONArray list = (JSONArray) jsonFile.get("singerList");
Iterator<JSONObject> it = list.iterator();
JSONObject singer;
while(it.hasNext()) {
singer = it.next();
System.out.printf("이름 : %s, \t성별: %s, \t나이: %d\n",
singer.get("name"), singer.get("gender"), singer.get("age"));
}
//JSONObject a = singer.get("gender");
//a.get("aaa");
//a.get("bbb");
}
}
- System.out.printf("출력 서식", 출력할 내용);
- %s(문자열 형식), %d(정수가 입력되는 형식)
Author And Source
이 문제에 관하여(9-2. JSON), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@zhyun1220/8-2.-JSON
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- XML문서의 단점 =>
실제데이터 : a,1,책 (5byte)면 되는데 문서부분(person~전체)
부수적인 내용 용량이 크다
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>a</name>
<age> 1 </age>
<hobby> 책 </hobby>
</person>
- JavaScript Object Notation
- 요즘 많이 사용하는 문서 표기 방법
- 경량(가벼운)의 DATA-교환방식
- 데이터 형식, 문자열 형태
- 각 프로그래밍 언어들은 표준에 맞게 JSON을 파싱, 직렬화 가능
- 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이
JSON 기본구조
- JavaScript Object 형식으로 표현된 String
- object는 name / value 형태의 쌍으로 collection 타입
- object는 { name : value,... } 표현
- JSON에서 value값으로 가능한 데이터 타입
- String, number(long타입), object(JSONObject), array, boolean, null
JSON 기본 자료형
1.수(Number)
- 8진수와 16진수를 표현하는 방법은 지원되지 않는다.
- 정수, 실수
2.문자열(String)
- 문자열은 큰 따옴표(")로 구분, 역슬래시 이스케이스 문법 지원
- 유니코드 문자들
"1234" "Love" "O-matic" "한글" "\"JSON\""
3.참/거짓(Boolean)
- true 또는 false 값
4.배열(Array)
- 0이상의 임의의 종류의 값으로 이루어진 순서가 있는 리스트.
- 대괄호로 나타내며 요소는 쉼표로 구분한다.
singerList":[{"gender":"남자","name":"개리","age":33},{"gender":"여자","name":"비욘세","age":35},{"gender":"남자","name":"마이클잭슨","age":55}]
[10, {"v": 20}, [30, "마흔"]]
5.객체(Object)
- 이름/값 쌍의 집합 중괄호{}를 사용, 문자열이기때문에 반드시 따옴표 ""
- 각 쌍들은 쉼표(,)로 구별 , 각쌍이 나오는 순서는 의미가 없다
{"name2": 50, "name3": "값3", "name1": true}
6.null
static Methods
- JSON.parse(text[,reviver])
- Parse the string text as JSON
- JSON.stringify(value[,replacer[,space]])
- Return a JSON string corresponding to the specified value
- all instances of undefined are replaced with null
parsing을 위해 json-simple-1.1.1jar 필요
예제 11.JasonTest / A_JsonSimpleWriterTest.java
public class A_JsonSimpleWriterTest {
public static void main(String[] args) throws IOException {
//JSON 데이터 생성
JSONObject jsonObj = new JSONObject();
//값 넣기
jsonObj.put("name", "오혁");
jsonObj.put("job", "가수");
jsonObj.put("age", 28);
jsonObj.put("addr", "서울 마포구 연남동");
//JSONArray 데이터 생성
JSONArray singerList = new JSONArray();
JSONObject singer = new JSONObject();
singer.put("name", "개리");
singer.put("gender", "남자");
singer.put("age", 33);
singerList.add(singer);
singer = new JSONObject();
singer.put("name", "비욘세");
singer.put("gender", "여자");
singer.put("age", 35);
singerList.add(singer);
singer = new JSONObject();
singer.put("name", "마이클잭슨");
singer.put("gender", "남자");
singer.put("age", 55);
singerList.add(singer);
jsonObj.put("singerList", singerList);
FileWriter fw = new FileWriter("d:/d_Other/myJsonFile.txt");
fw.write(jsonObj.toString()); // number타입도 포함되서 문자열로 변환 toString()
fw.flush();
fw.close();
}
}
- FIleWriter할때 경로지정 (d:/d_Other/myJsonFile.txt) 텍스트 파일 생성
예제 11.JasonTest / A_JsonSimpleReadTest.java
public class A_JsonSimpleReadTest {
public static void main(String[] args) throws IOException, ParseException {
// Json 읽어오기
// d:/D_Other/myJsonFile.txt => JSON데이터
FileReader fr = new FileReader("d:/D_Other/myJsonFile.txt");
JSONParser parser = new JSONParser();
// fr(JSON 데이터) parse 부분
Object obj = parser.parse(fr);
//obj에 담긴 parse한 JSON데이터를 JSONObject로 만들어준다.
JSONObject jsonFile = (JSONObject) obj;
//name : value => name이 "name", "job", "age", "addr"인 vlaue값 get
String name = (String) jsonFile.get("name");
String job = (String) jsonFile.get("job");
long age = (long) jsonFile.get("age"); // number은 long타입
String addr = (String) jsonFile.get("addr");
System.out.println("name : "+ name);
System.out.println("job : "+ job);
System.out.println("age : "+ age);
System.out.println("addr : "+ addr);
JSONArray list = (JSONArray) jsonFile.get("singerList");
Iterator<JSONObject> it = list.iterator();
JSONObject singer;
while(it.hasNext()) {
singer = it.next();
System.out.printf("이름 : %s, \t성별: %s, \t나이: %d\n",
singer.get("name"), singer.get("gender"), singer.get("age"));
}
//JSONObject a = singer.get("gender");
//a.get("aaa");
//a.get("bbb");
}
}
- System.out.printf("출력 서식", 출력할 내용);
- %s(문자열 형식), %d(정수가 입력되는 형식)
Author And Source
이 문제에 관하여(9-2. JSON), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zhyun1220/8-2.-JSON저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)