파싱



이런 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 값만 따로 배열에 잘 들어가있음을 확인할 수 있다.


이제 파싱해낸 값으로 다양한 곳에 쓸 수 있다.



  1. 2018.01.22 23:10

    비밀댓글입니다

    • yonoo88 2018.01.23 18:32 신고

      안녕하세요. 저도 오래전 코드라 기억이 잘 나질 않네요. 개발이 일이 아닌터라 코드는 저게 전부여서요. 도움이 못되어서 죄송합니다.

뭐가 뭔지 잘 모르겠지만 일단은 출력된다...

http://www.jthink.net/jaudiotagger/

여기서 왼쪽 하단에 downloads 탭에 Maven Release 에서 

가장 최신으로 보이는 2.2.0-SNAPSHOT 으로 들어간다음

jaudiotagger-2.2.0-20130321.142353-1.jar

jar 파일을 다운 받아 프로젝트 속성에서 라이브러리를 추가해주었다.


jaudiotagger-2.2.0-20130321.142353-1.jar


자세한 소스분석은 모르겠다...


import java.io.File;

import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.jaudiotagger.tag.id3.AbstractID3v2Tag;
public class test {
 public static void main(String[] args) throws Exception {
		String decoding = "ISO-8859-1";
		String encoding = "EUC-KR";
		File file = new File("/home/jeong/걸스데이-말해줘요.mp3");
		MP3File mp3 = (MP3File) AudioFileIO.read(file);
//  ID3v24Tag tag24 = mp3.getID3v2TagAsv24();
		AbstractID3v2Tag tag2 = mp3.getID3v2Tag();

		Tag tag = mp3.getTag();
		String title = tag.getFirst(FieldKey.TITLE);
		String artist = tag.getFirst(FieldKey.ARTIST);
		String album = tag.getFirst(FieldKey.ALBUM);
		String year = tag.getFirst(FieldKey.YEAR);
		String genre = tag.getFirst(FieldKey.GENRE);

		System.out.println("Tag : " + tag2);
		System.out.println("Song Name : " + title);
		System.out.println("Artist : " + artist);
		System.out.println("Album : " + album);
		System.out.println("Year : " + year);
		System.out.println("Genre : " + genre);
	}
}


출력결과

Tag : Tag content:

TIT2:Text="말해줘요"; 

TPE1:Text="걸스데이"; 

TALB:Text="GIRL`S DAY Party #6 [Digital Single]"; 

TCON:Text="아이돌"; 

TRCK:Text="1"; 

TYER:Text="2013"; 

TPE2:Text="걸스데이"; 

USLT:Language="English"; Lyrics="Intro>

우리 둘이 함께 해요 나를 혼자 두진 마

이 밤이 깊어져만 가 빨리 고백 

(민아)

안해? 안해? 안할꺼야?


A>

(소진)

You! 넌 내 맘을 너무 몰라 

Oh You! 빛나는 저 파도같아

You! 왜 자꾸 애태우는지 (아이야아 아아 이 야이야)


A`

(혜리)

(하나 하나 하나 둘 셋 넷!) 하면 솔직히 내게 말해줘 

(니가 먼저 말해주면 안돼) Oh 부끄러워 부끄럽단 말야 


B>

(민아)

시원한 바람 아름다운 해변 이곳엔 너와 단 둘이 

모든 걱정들은 저기 저 바다에 던져 버릴래 


C> 

(다같이)

지금 말해줘요 말해줘요 말해줘요  

(소진)

사실은 나를 좋아한다고 우릴 위한 저 바닷가로  빨리 떠나요 


(다같이)

지금 말해줘요 말해줘요 말해줘요 

(민아)

난 너 하나면 충분해 약속해 손가락 걸고 말해줘 말해줘요 말해줘 말해줘요 



Rap>

(유라)

다다른 여자보단 내가 나아 하나보단 둘이 

아침부터 저녁까지 우리 둘이 (나나나나) 

이 노래를 불러 Say 1!2!3!4!



(민아) 

야! 안 따라 부르냐?


B>

(혜리)

뜨거운 태양 부서지는 파도 이곳엔 너와 단 둘이 

(민아)

모든 걱정들은 저기 저 하늘에 던져 버릴래 


C> 

(다같이)

지금 말해줘요 말해줘요 말해줘요 

(민아)

난 너하나면 충분해 약속해 손가락 걸고 말해줘 말해줘요 말해줘 말해줘요 


Bridge>

(유라) 

오늘밤이 다 가기 전에 고백해줄래요 

(소진)

사랑해 사랑해 달콤한 입술로

(민아)

아침을 깨워줄 그댄 너란 걸  


C> 

(소진)

지금 말해줘요 나 사랑한다는 그 말 아끼지 말아요 두 손을 꼭 붙잡고 멀리 떠나요



(다같이-소진 애드립)

지금 말해줘요 말해줘요 말해줘요

(민아)

너와 이 여름안에서 영원히 함께 할래요 말해줘 말해줘요 말해줘 말해줘요


"; 

TLAN:Text="kor"; 

TPOS:Text="1"; 

APIC:MIMEType="image/jpeg"; PictureData="57966 bytes"; 


Song Name : 말해줘요

Artist : 걸스데이

Album : GIRL`S DAY Party #6 [Digital Single]

Year : 2013

Genre : 아이돌









'지식메모 > JAVA' 카테고리의 다른 글

숫자 천단위 콤마 입력하기  (0) 2014.09.25
Json의 이해  (0) 2013.11.05
대문자 소문자 서로 변환하기  (0) 2013.10.08
java 문자열 구분자로 자르기  (0) 2013.10.02
ObjectNode 와 JsonNode 차이?  (0) 2013.09.06
mp3 ID3 v2 태그 파싱하기  (2) 2013.08.27
  1. 어우 감사합니다.찾고 다녔는데...이렇게 볼 줄이야ㅣ...ㅠㅠ

    • yonoo88 2014.10.16 18:50 신고

      도움이 되셨다니 다행이네요. 나눌 수 있어 감사합니다

+ Recent posts

티스토리 툴바