본문 바로가기
Project/ETC

String to Class

by windrises 2008. 3. 6.

ㅋㅋ 돌아댕기는걸 쓰지 왜 이걸 만들었을까... 벌써 2년전이네.. 와;;

문자열을 클래스안에 array와 hashtable으로 저장하고 편리한 인덱스 구조로 value를 추출하는데 목적이 있다.

"[{id1:gupper,id2:gozone},{name1:최재용,name2:[{id3:aaaa},{id4:[{man1:girl1,man2:girl2,man3:girl3,man4:girl4,man5:girl5},{id3:girl6,man7:girl7},{man8:girl8}]},{public:nnnnn}]},{naver:blog,id3:mail}]"
위 일정 규칙에 의해 만들어진 스트링(key, value의 조합)을 클래스화 시켜서
해당 location을 인덱스로 value를 가져온다.

-----------------------------------------------------------------------------------------------------
아래는 converting후 문자열의 구조를 보고(toString()) value들을 가져오는 결과물이다.
* 대괄호를 .(dot)로 연결하면 바로 index가 된다.

[mapping 클래스의 구조를 본다]
[0][id2][value:gozone]
[0][id1][value:gupper]
[1][name2][0][id3][value:aaaa]
[1][name2][1][id4][0][man5][value:girl5]
[1][name2][1][id4][0][man4][value:girl4]
[1][name2][1][id4][0][man3][value:girl3]
[1][name2][1][id4][0][man2][value:girl2]
[1][name2][1][id4][0][man1][value:girl1]
[1][name2][1][id4][1][id3][value:girl6]
[1][name2][1][id4][1][man7][value:girl7]
[1][name2][1][id4][2][man8][value:girl8]
[1][name2][2][public][value:nnnnn]
[1][name1][value:최재용]
[2][id3][value:mail]
[2][naver][value:blog]


[id3를 key로 하는 values]
0:aaaa
1:girl6
2:mail

* 인덱스는 편리성을 고려해 아래처럼 두가지 방법을 제공한다.

1.name2.1.id4.0.man2의 value : girl2
[1].name2[1].id4[0].man2의 value : girl2

1.name2.2.public의 value : nnnnn
[1].name2[2].public의 value : nnnnn


-----------------------------------------------------------------------------------------------------
아래는 테스트 소스이다.

package com.rf.util;

/*
* Revision History(Created on 2006. 9. 30)
* =========================================================
* 테스트
* ---------------------------------------------------------
*/
public class RFStringToClassTest {
    public static void main(String args[]){
        //String mapStr = "[{id1:value1,id2:[{pc:2001,pn:무배당1},{pc:2002,pn:[{pn1:무배당1-1-1,pn2:무배당1-1-2},{pn1:무배당1-2-1,pn2:무배당1-2-2}]}]},{id3:value1,id4:[{pc:2003,pn:무배당3},{pc:2004,pn:무배당4}]}]";
        String mapStr_ = "[{id1:gupper,id2:gozone},{name1:최재용,name2:[{id3:aaaa},{id4:[{man1:girl1,man2:girl2,man3:girl3,man4:girl4,man5:girl5},{id3:girl6,man7:girl7},{man8:girl8}]},{public:nnnnn}]},{naver:blog,id3:mail}]";
        RFStringToClass mapping = new RFStringToClass(mapStr_);
       
        //sample
        System.out.println("[mapping 클래스의 구조를 본다]");
        System.out.println(mapping.toString());
        System.out.println();
        String[] values = mapping.getValues("id3");
        System.out.println("[id3를 key로 하는 values]");
        for(int i=0 ; i<values.length ; i++){
                System.out.println(i+":"+values[i]);
        }
        System.out.println("\n1.name2.1.id4.0.man2의 value : "+mapping.getValue("1.name2.1.id4.0.man2"));
        System.out.println("[1].name2[1].id4[0].man2의 value : "+mapping.getValue("[1].name2[1].id4[0].man2"));
        System.out.println();
        System.out.println("1.name2.2.public의 value : "+mapping.getValue("1.name2.2.public"));
        System.out.println("[1].name2[2].public의 value : "+mapping.getValue("[1].name2[2].public"));
    }

}


'Project > ETC' 카테고리의 다른 글

공통JS  (1) 2008.07.17
JSONHandler  (0) 2008.01.03
web editor  (2) 2007.12.24
RPIC -testFiles  (0) 2007.11.20
screenshot - RPIC  (0) 2007.11.20