json
-
Json의 이해2013.11.05
-
ObjectNode 와 JsonNode 차이?2013.09.06
json Array 내부에 있는 Json 데이터 추출하여 배열에 저장하기
이런 Json배열 하나에 여러개의 Json이 있다고 가정했을 때
Json 값마다 있는 idx,link,description 키값을 사용해 데이터를 저장해보았다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
String eventArray = null; //Json Array를 String으로 저장하기 위한 변수 선언
try {
eventArray = loadHtml(); //loadHtml()는 Json Array를 파싱해서 String으로 가져오는 함수라 가정
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("결과물 : " + eventArray);
try {
JSONArray array = new JSONArray(eventArray); //JSONArray형식으로 파싱하기 위해 새로 선언해주며 eventArray를 집어 넣어준다.
list_cnt = array.length(); //Json 배열 내 JSON 데이터 개수를 가져옴
//key의 value를 가져와 저장하기 위한 배열을 생성한다
getDescription = new String[list_cnt]; //decription 저장용
getLink = new String[list_cnt]; //link 저장용
getImageUrl = new String[list_cnt]; //imageUrl 저장용
for (int i = 0; i < list_cnt; i++) { //JSONArray 내 json 개수만큼 for문 동작
JSONObject jsonObject = array.getJSONObject(i); //i번째 Json데이터를 가져옴
getDescription[i] = jsonObject.getString("description"); //descripton 값을 배열에 저장
getLink[i] = jsonObject.getString("link"); //link 값을 배열에 저장
getImageUrl[i] = jsonObject.getString("imageUrl"); //imageurl 값을 배열에 저장
Log.i("JSON Object", jsonObject + "");
Log.i("JsonParsing", getDescription[i] + "," + getLink[i] + "," + getImageUrl[i]);
}
|
cs |
Log로 찍어보면
JsonObject의 로그
I/JSON Object: {"idx":15858,"imageUrl":"http:\/\/img.cgv.co.kr\/Event\/Event\/2017\/0330\/some_240x200_01.jpg","link":".\/detail-view.aspx?idx=15858&menu=2","description":"<어느날>1+1 예매 이벤트"}
파싱해낸 데이터 description, link, imageUrl 순으로 파싱이 된 걸 볼 수 있다.
I/JsonParsing: <어느날>1+1 예매 이벤트,./detail-view.aspx?idx=15858&menu=2,http://img.cgv.co.kr/Event/Event/2017/0330/some_240x200_01.jpg
배열에 잘 들어갔는지 description을 예로 확인을 해보면
for(int i=0;i<description.length;i++){
System.out.println("배열값 : "+description[i]);
}
I/System.out: 배열값 : <시간위의 집>스타★라이브톡
I/System.out: 배열값 : <보통사람>1+1 예매권 2차 이벤트
I/System.out: 배열값 : <로즈> 기대평 이벤트
I/System.out: 배열값 : <공각기동대:고스트 인 더 쉘>예매 경품 이벤트
description 값만 따로 배열에 잘 들어가있음을 확인할 수 있다.
이제 파싱해낸 값으로 다양한 곳에 쓸 수 있다.
'지식메모 > JAVA' 카테고리의 다른 글
자바 Swing에서 ArrayList를 JcomboBox에 집어넣기 (1) | 2019.04.28 |
---|---|
자바 스윙으로 파일 열기창 구현 (0) | 2017.06.14 |
자바 일정구간 문자열 추출하기 (0) | 2017.03.24 |
eclipse java.lang.SecurityException: class "org.hamcrest.Matchers"' 에러 해결하기 (0) | 2017.03.13 |
자바 이미지 파일 포함하여 프레임바 아이콘 변경 후 실행가능한 jar 파일로 생성하기 (0) | 2015.10.15 |
Json의 이해
만들고자 하는 구조는
{
"j1":{
"j2":{
"arr1":[{"j3":"a"},{"j4":"b"}]
}
}
}
이런 유형의 구조이다. 그렇다면 필요한 코드는
ObjectNode json = json.newObject();
ObjectNode j1 = json.newObject();
ObjectNode j2 = json.newObject();
ObjectNode arr1 = json.newObject();
ObjectNode j3 = json.newObject();
ObjectNode j4 = json.newObject();
ArrayNode array = null;
이렇게 한 뒤 구현하려면 역순으로 구현한다.
json객체 생성
j3.put("j3","a"); --> {"j3":"a"}
j4.put("j4","b"); --> {"j4":"b"}
json객체를 array라는 배열에 삽입
array.add(j3); --> [{"j3":"a"}]
array.add(j4); --> [{"j3":"a"},{"j4":"b"}]
array배열을 arr1이라는 key로 arr1 jsonobject에 삽입
arr1.put("arr1",array)
--> {arr1:[{"j3":"a"},{"j4":"b"}]}
arr1 jsonObject를 j2라는 key로 j2 jsonObject에 삽입
j2.put("j2",arr1);
--> {j2:{"arr1":[{"j3":"a"},{"j4":"b"}]}}
j2 jsonObject를 j1라는 key로 j1 jsonObject에 삽입
j1.put("j1",j2);
--> {"j1":{"j2":{"arr1":[{"j3":"a"},{"j4":"b"}]}}}
이렇게 된다.
역순으로 jsonObject생성해서 배열에 넣고,
그 배열을 jsonobject 생성해서 집어넣고,
그걸 또 jsonObject에 넣는 역순이다.
위 소스를 쉽게쓰면
ObjectNode json1;
ObjectNode json2;
ObjectNode json3;
arrayNode arr = null;
json3 = json.newObject();
json3.put("j3","a");
arr.add(json3);
json3 = json.newObject();
/*
여기서 json3은 객체 새로 생성안하면
{"j3":"a", "j4", "b"}가 되고,
객체를 새로 생성하면
{"j4":"b"}가 된다.
초기화 안하면 아래 arr.add에서
{"j3":"a"},{"j3":"a","j4":"b"} 로 들어가게된다.
*/
json3.put("j4","b");
arr.add(json3);
json3 = json.newObject();
json3.put("arr1",arr);
json2 = json.newObject();
json2.put("j2",json3);
json1 = json.newObject();
json1.put("j1",json2);
이런 식이다. 간단한거 같은데 많이 헷갈린다;;
'지식메모 > JAVA' 카테고리의 다른 글
Java 텍스트 파일 생성과 읽기를 이용한 누적시간 계산하기 (0) | 2014.12.29 |
---|---|
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
java 문자열 구분자로 자르기 (0) | 2013.10.02 |
ObjectNode 와 JsonNode 차이? (0) | 2013.09.06 |
ObjectNode 와 JsonNode 차이?
ObjectNode 와 JsonNode의 차이가 뭔지 몰랐는데 이런 차이라고 한다.
Json으로 나타난 정보에서
[ ]
표시로 시작되는 건 배열이기 때문에 Arraynode 이며
{ }
표시로 시작하는 건 Json 값이기 때문에 JsonNode 이다
그런데 JsonNode는 값을 불러올 수는 있지만 넣을 수는 없기 때문에
값을 넣기 위해서는 ObjectNode를 사용한다.
ObjectNode는 값을 불러오고 넣을 수도 있다.
요약하면
JsonNode 는 값을 읽을 수만 있고 ObjectNode는 값을 읽고 쓸 수 있다.
Json 사용법 링크
http://yonoo88.tistory.com/322
'지식메모 > JAVA' 카테고리의 다른 글
숫자 천단위 콤마 입력하기 (0) | 2014.09.25 |
---|---|
Json의 이해 (0) | 2013.11.05 |
대문자 소문자 서로 변환하기 (0) | 2013.10.08 |
java 문자열 구분자로 자르기 (0) | 2013.10.02 |
mp3 ID3 v2 태그 파싱하기 (3) | 2013.08.27 |