ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSON 데이터 형식
    JAVA 2023. 3. 20. 23:30
    • JSON(Javascript Object Notation) : 자바스크립트에서의 객체 표현 방식으로 초기에 자바스크립에서 사용하는 데이터 형식이었으나 여러가지 장점이 많아서 널리 쓰이게 됨.
    • 네트워크 통신에서 가장 많이 사용되는 데이터 형식
    • 네트워크로 전달하는 데이터가 복잡할수 구조화된 형식이 필요하며, 이때 JSON 및 XML 표현 방을 사용한다.

     

    객체(Entity) 표기 배열 표기
    {
     "속성명": 속성값
     "속성명": 속성값
    }
    [항목, 항목, ...]
    속성명: 반드시 "로 감싸야 함

    속성값으로 가능한 것
    • "문자열", 숫자, true/false
    • 객체 { ... }
    • 배열[ ...]
    항목으로 가능한 것
    • "문자열", 숫자, true/false
    • 객체 {...}
    • 배열 [ ... ]

     

    • JSON 라이브러리 추가
      - maven repository 접속(https://mvnrepository.com/)하여 "json" 검색해서 나오는 "JSON In Java"에서 최신 버전의 jar 파일 다운로드
      - 이클립스에서 라이브러리 추가할 프로젝트의 lib 폴더에 jar 파일을 추가하고 Add Build Path 
    • JSON 라이브러리에서 JSON 표기볍과 관련된 클래스
      • JSONObject
        - JSON 객체 표기를 생성하거나 파싱할 때 사용
      • JSONArray
        - JSON 배열 표기를 생성하거나 파싱할 때 사용

     

    • JSON 객체 생성 및 속성 추가

     

    //JSON 객체 생성
    JSONObject root = new JSONObject();
     
    //속성 추가
    root.put("id",  "winter");
    root.put("nam""한겨웅");
    root.put("age"25);
    root.put("student"true);
     
    //객체 속성 추가
    JSONObject tel = new JSONObject();
    tel.put("home""02-123-1234");
    tel.put("mobile""010-123-1234");
    root.put("tel", tel);    //객체에 객체 추가

     

     

    • JSON 배열 생성 및 추가

     

    //배열 속성 추가
    JSONArray skill = new JSONArray();
    skill.put("Java");
    skill.put("c");
    skill.put("c++");
    root.put("skill", skill);    //객체에 배열 추가

     

    • JSON 형식을 문자열로 변환 및 출력

     

    //JSON 얻기
    String json = root.toString();
     
    //콘솔에 출력
    System.out.println(json);

     

     

    • JSON 파일로 저장

     

    //파일로 저장
    Writer writer = new FileWriter("C:/Temp/member.json", Charset.forName("UTF-8"));
    writer.write(json);
    writer.flush();
    writer.close();

     

     

    • JSON 데이터는 줄바꿈 없이 한 줄에 모든 데이터가 기록되며, 보기에는 불편하지만 데이터 전송 시 데이터 전소량을 줄이는 이점이 있다.
    • JSON에서 속성은 순서 상관없이 저장된다.
      - 이미 구조화되어 있기 때문에 데이터를 찾는데 문제가 없다.
      - 다만 순서가 중요한 데이터에 사용하기에는 부적절하다.
    • 설정 정보를 저장하기 위해 사용
      - XML, Properties 등의 형식도 비슷한 용도 사용 가능
    • JSON의 데이터가 중괄호{ }로 시작하면 JSONObject로 해석하고, 대괄호 [ ]로 시작하면 JSONArray로 해석해야 한다.

     

    • JSON 파일을 읽어와 데이터를 파싱하는 예제

     

    public static void main(String[] args) {
        //파일로부터 JSON 읽기
        BufferedReader br = null;
        try {
            br = new BufferedReader( new FileReader("C:/Temp/member.json", Charset.forName("UTF-8")));
            String json = br.readLine();
            
            //JSON 파싱
            JSONObject root = new JSONObject(json);
            
            //속성 정보 읽기
            System.out.println("id: " + root.getString("id"));
            System.out.println("name: " + root.getString("name"));
            System.out.println("age: " + root.getInt("age"));
            System.out.println("student: " + root.getBoolean("student"));
            
            //객체 속성 정보 읽기
            JSONObject tel = root.getJSONObject("tel");
            System.out.println("home: " + tel.getString("home"));
            System.out.println("mobile: " + tel.getString("mobile"));
            
            //배열 속성 정보 읽기
            JSONArray skill = root.getJSONArray("skill");
            System.out.println("skill: ");
            for(int i=0; i<skill.length(); i++) {
                System.out.println(skill.get(i) + ", ");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

     

     


    'JAVA' 카테고리의 다른 글

    UDP 네트워킹  (0) 2023.03.20
    TCP 네트워킹  (0) 2023.03.20
    네트워크 입출력  (0) 2023.03.20
    보조 스트림  (0) 2023.03.17
    데이터 입출력  (0) 2023.03.17
Designed by Tistory.