🎨 Programming/JavaScript

[JSON] (JavaScript Object Notation)

ryang x2 2020. 10. 31. 17:35
728x90
반응형

# JSON (JavaScript Object Notation) 

데이터를 교환하고 저장하기 위해 만들어진 텍스트 기반의 테이터 교환 표준입니다.
*현재는 가장 많이 사용된다.

 

특징

1. JSON은 자바스크립트를 확장하여 만들어졌습니다. 
2. JSON은 자바스크립트 객체 표기법을 따릅니다. 
3. JSON은 프로그래밍 언어와 운영체제에 독립적입니다. 

 

 

# XML (EXtensible Markup Langauage) 

HTML과 비슷한 문자 기반의 마크업 언어입니다. 데이터를 저장하고 전달할 목적으로 만들어졌습니다. 
* 안드로이드 프로그래밍 안에서 데이터를 주고 받을 때 많이 사용된다!

 

JSON과 XML의 공통점 

1. 둘다 데이터를 저장하고 전달하기 위해 만들어졌습니다. 
2. 기계뿐 아니라 사람도 읽기 쉽게 만들어졌습니다. 
3. 계층 데이터 구조를 가집니다. 
4. 프로그래밍 언어에 의해 파싱될 수 있습니다.

 

 JSON 예시

{ 
"userNum": 2, 
"userHp": "010-2222-2222", 
"userAddr": "%EC%84%9C%EC%9A%B8+%EA%B0%95%EB%82%A8%EA%B5%AC", 
"userName": "%EB%B0%98%ED%95%98%EB%82%98", 
"userAge": 10 
} 


XML 예시

<dog> 
<name>달라</name> 
<family>사모예드</family> 
<age>1</age> 
<weight>30</weight> 
</dog>

 

JSON 문법  

1. { 로 시작해서 } 로 끝납니다. 

 

2. JSON은 이름과 값으로 구성된 프로퍼티의 집합으로 만들어져 있습니다. 

{ "name":"루시"; "family":"포메리안"; "age":9; "weight":2.5; }


3. 주석이 없습니다.
4. 배열은 대괄호([])로 둘러쌓여 있습니다. 

{ "dog":[ {"name":"루시", "family":"포메리안", "age":9, "weight":2.5} 
          {"name":"루시", "family":"포메리안", "age":9, "weight":2.5} ] } 


5. 객체 안에 객체를 사용할 수 있습니다.(배열 안에 배열도 가능)

{ "name":"루시"; "family":"포메리안"; "age":9; "weight":2.5, 
"owner": { "name":"홍길동", "phone":"010-1111-1111", "adr":"서울시 강남구" } }

 

 

 데이터 타입 

* 숫자 : 정수(1), 실수(2.5), 지수(5.11e+2)
* 문자열 : "루시", \n, \t ..
* 불리언 : true, false
* 객체 : { 키:값 }
* 배열 : [값, 값, .. ]
* null : null(데이터가 없다)

 

 

● json 문법 검증 사이트

jsonlint.com/

 

The JSON Validator

JSONLint is the free online validator and reformatter tool for JSON, a lightweight data-interchange format.

jsonlint.com

 

예시)

java

package com.koreait.model;

public class User {
	private int userNum;
	private String userName;
	private int userAge;
	private String userHp;
	private String userAddr;
	
	public User(int userNum, String userName, int userAge, String userHp, String userAddr) {
		this.userNum = userNum;
		this.userName = userName;
		this.userAge = userAge;
		this.userHp = userHp;
		this.userAddr = userAddr;
	}

	public int getUserNum() {
		return userNum;
	}

	public void setUserNum(int userNum) {
		this.userNum = userNum;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getUserAge() {
		return userAge;
	}

	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}

	public String getUserHp() {
		return userHp;
	}

	public void setUserHp(String userHp) {
		this.userHp = userHp;
	}

	public String getUserAddr() {
		return userAddr;
	}

	public void setUserAddr(String userAddr) {
		this.userAddr = userAddr;
	}
}

 

servlet

@WebServlet(name="FormTest3", urlPatterns= {"/formtest3"})
public class FormTest3Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FormTest3Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		ArrayList<User> list = new ArrayList<>();
		User user1 = new User(1, "김사과", 20, "010-1111-1111", "서울 동작구");
		User user2 = new User(2, "반하나", 10, "010-2222-2222", "서울 강남구");
		User user3 = new User(3, "오렌지", 23, "010-3333-3333", "서울 서초구");
		User user4 = new User(4, "이메론", 28, "010-4444-4444", "서울 구로구");
		User user5 = new User(5, "박수박", 34, "010-5555-5555", "서울 양천구");
		
		list.add(user1);
		list.add(user2);
		list.add(user3);
		list.add(user4);
		list.add(user5);
		
		int userNum = Integer.parseInt(request.getParameter("userNum"));
		User user = list.get(userNum-1);
		
		JSONObject result = new JSONObject();
		result.put("userNum", user.getUserNum());
		result.put("userName", URLEncoder.encode(user.getUserName(), "UTF-8"));
		result.put("userAge", user.getUserAge());
		result.put("userHp", user.getUserHp());
		result.put("userAddr", URLEncoder.encode(user.getUserAddr(), "utf-8"));
		
		response.setContentType("application/json");
		PrintWriter out = response.getWriter();
		out.print(result);
		out.flush();
		out.close();
	}

}

728x90
반응형