문자열을 클래스안에 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 |