json 파싱하기
이런 json 포맷을 이해할 수 있는 자료형으로 파싱하기 위한 다양한 라이브러리들이 있습니다.
기본적으로 java의 JsonObject와 JsonArray로 json을 파싱할 수 있습니다.
{
"name": "hello!",
"data": {
"name": "jspiner",
"age": 8,
"birth": 1996
},
"friends": [
"john",
"smith",
"sam"
],
"books": [
{
"name": "book1",
"price": 10000
},
{
"name": "book2",
"price": 15000
},
{
"name": "book3",
"price": 7000
}
]
}
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = (JsonObject) jsonParser.parse(json);
JsonObject dataObject = (JsonObject) jsonObject.get("data");
System.out.print("name : " + dataObject.get("name"));
System.out.print("age : " + dataObject.get("age"));
System.out.print("birth : " + dataObject.get("birth"));
직렬화(Serialization) 이용하기
직렬화란 객체를 직렬화하여 전송 가능한 형태로 만드는것을 의미한다. 객체들의 데이터를 특정한 포맷의 연속적인 데이터로 변형하여 데이터를 읽도록 하는 것이다.
java에서는 직렬화를 지원하는 Gson Jackson등의 라이브러리가 있다.
JsonObject로 파싱하던 위 코드를 Gson으로 파싱하기 위해선 우선 객체를 담을 클래스를 구현한다.
class DataJson {
@SerializedName("name")
public String name;
@SerializedName("data")
public Data data;
@SerializedName("books")
public List<Book> books;
class Data{
@SerializedName("name")
public String name;
@SerializedName("age")
public int age;
@SerializedName("birth")
public int birth;
}
class Book{
@SerializedName("name")
public String name;
@SerializedName("price")
public int price;
}
}
// @SerializedName은 파싱할때 사용될 key 이름이다.
DataJson dataJson= new Gson().fromJson(json, DataJson.class);
System.out.println("name : " + dataJson.name);
for(DataJson.Book book : dataJson.books){
System.out.println("book name : " + book.name);
System.out.println("book price : " + book.price);
}
출처:https://calyfactory.github.io/%EC%A0%9C%EC%9D%B4%EC%8A%A8%ED%8C%8C%EC%8B%B1/
'Server Enterprise > Java' 카테고리의 다른 글
[Split] | 자르기 (0) | 2018.04.26 |
---|---|
[remoteAddr] Proxy 환경에서 client IP 를 얻기 위한 X-Forwarded-For(XFF) http header (0) | 2017.03.03 |
[알고리즘] 문제 출제 및 유용한 사이트 (0) | 2016.08.08 |
[Java] Design Pattern (0) | 2016.07.07 |
[Book] 알고리즘 관련 서적 for java (0) | 2016.07.05 |