언어 및 도구들 공부/Java

JSON 구조와 Java 클래스 구조

Dr.Mlem 2024. 9. 27. 23:41

(29단원의 data05 클래스와 05.json 참고)


Q.

{
    "rss": {
        "item": [
            {
                "title": "파일 형식의 데이터",
                "description": "가장 기초적인 문자열 형식",
                "pubDate": "2014-12-25"
            }, {
                "title": "JSON 형식의 데이터",
                "description": "데이터를 key와 value로 구조화한 형식",
                "pubDate": "2014-12-31"
            }
        ]
    }
}


Json의 바깥부터 안으로 들어가면서 이야기를 해보자면, Data05 클래스는, Rss 클래스의 객체 하나를 멤버 변수로 갖고 있었고, 그 Rss클래스는, 어떤 리스트를 멤버변수로 갖고 있었는데, 그 리스트를 구성하고 있는 객체들의 클래스가 Item 인거야?



네, 맞습니다. 주어진 JSON 구조를 바깥부터 안으로 설명하자면 다음과 같습니다:

Data05 클래스: 최상위 클래스입니다. 이 클래스는 Rss 클래스의 객체를 멤버 변수로 가지고 있습니다.
Rss 클래스: Data05 클래스의 멤버 변수로 포함되어 있습니다. 이 클래스는 Item 객체의 리스트를 멤버 변수로 가지고 있습니다.
Item 클래스: Rss 클래스의 멤버 변수인 리스트를 구성하는 객체입니다. 각 Item 객체는 JSON 배열의 각 요소에 해당합니다.

JSON 구조

{
    "rss": {
        "item": [
            {
                "title": "파일 형식의 데이터",
                "description": "가장 기초적인 문자열 형식",
                "pubDate": "2014-12-25"
            },
            {
                "title": "JSON 형식의 데이터",
                "description": "데이터를 key와 value로 구조화한 형식",
                "pubDate": "2014-12-31"
            }
        ]
    }
}

Java 클래스 구조
이 JSON 구조를 Java 클래스로 표현하면 다음과 같습니다:

Data05 클래스

package com.stevek.model;

import java.util.List;

public class Data05 {
    private Rss rss;

    public Data05() {
    }

    public Data05(Rss rss) {
        this.rss = rss;
    }

    public Rss getRss() {
        return rss;
    }

    public void setRss(Rss rss) {
        this.rss = rss;
    }

    @Override
    public String toString() {
        return "Data05{" +
                "rss=" + rss +
                '}';
    }

    public static class Rss {
        private List<Item> item;

        public Rss() {
        }

        public Rss(List<Item> item) {
            this.item = item;
        }

        public List<Item> getItem() {
            return item;
        }

        public void setItem(List<Item> item) {
            this.item = item;
        }

        @Override
        public String toString() {
            return "Rss{" +
                    "item=" + item +
                    '}';
        }

        public static class Item {
            private String title;
            private String description;
            private String pubDate;

            public Item() {
            }

            public Item(String title, String description, String pubDate) {
                this.title = title;
                this.description = description;
                this.pubDate = pubDate;
            }

            public String getTitle() {
                return title;
            }

            public void setTitle(String title) {
                this.title = title;
            }

            public String getDescription() {
                return description;
            }

            public void setDescription(String description) {
                this.description = description;
            }

            public String getPubDate() {
                return pubDate;
            }

            public void setPubDate(String pubDate) {
                this.pubDate = pubDate;
            }

            @Override
            public String toString() {
                return "Item{" +
                        "title='" + title + '\'' +
                        ", description='" + description + '\'' +
                        ", pubDate='" + pubDate + '\'' +
                        '}';
            }
        }
    }
}


클래스 설명
Data05 클래스: 최상위 클래스이며, Rss 객체를 멤버 변수로 가지고 있습니다.

Rss 클래스의 인스턴스를 필드로 가집니다.
기본 생성자와 매개변수가 있는 생성자, getter, setter, toString 메서드를 포함합니다.
Rss 클래스: Data05 클래스의 이너 클래스이며, Item 객체의 리스트를 멤버 변수로 가지고 있습니다.

Item 클래스의 리스트를 필드로 가집니다.
기본 생성자와 매개변수가 있는 생성자, getter, setter, toString 메서드를 포함합니다.
Item 클래스: Rss 클래스의 이너 클래스이며, 각 item 객체를 나타냅니다.

title, description, pubDate 필드를 가집니다.
기본 생성자와 매개변수가 있는 생성자, getter, setter, toString 메서드를 포함합니다.
이 구조를 통해 주어진 JSON 데이터를 Java 객체로 쉽게 변환하고 사용할 수 있습니다.

'언어 및 도구들 공부 > Java' 카테고리의 다른 글

Stream 2  (0) 2024.09.28
Stream, Java의 byte 타입 데이터와 1Byte  (0) 2024.09.28
try-catch와 throw 구문  (0) 2024.09.27
Maven을 이용한 Java 프로젝트 경로상의 대문자 사용  (0) 2024.09.27
buffer 3  (0) 2024.09.27