1. JSON-LIB는 콩,지도, 컬렉션, Java 어레이 및 XML을 포함한 Java 객체를 JSON 또는 역전 변환으로 변환하는 기능을 제공하는 Java 클래스 라이브러리입니다.
2. json-lib 홈페이지 : http://json-lib.sourceforge.net/
3. 실행 환경
다음 라이브러리 지원이 필요합니다
커먼즈 라인 2.5
Commons-Beanutils 1.8.0
공통점 수집 3.2.1
커먼즈 로깅 1.1.1
Ezmorph 1.0.6
4. 기능적 예
다음은 Junit-Case 예제에 의해 제공되는 코드 예입니다
코드 사본은 다음과 같습니다.
패키지 com.mai.json;
static org.junit.assert.assertequals 가져 오기;
java.util.arraylist 가져 오기;
import java.util.date;
java.util.hashmap import;
import java.util.iterator;
Java.util.list 가져 오기;
java.util.map import;
import net.sf.ezmorph.morpher;
import net.sf.ezmorph.morpherregistry;
import net.sf.ezmorph.bean.beanmorpher;
import net.sf.json.jsonarray;
import net.sf.json.jsonobject;
가져 오기 net.sf.json.util.jsonutils;
import org.apache.commons.beanutils.propertyutils;
import org.junit.test;
공개 클래스 JSONLIBTEST {
/*
* 정상 유형, 목록, 수집 등은 모두 jsonarray를 사용하여 구문 분석됩니다.
*
* 맵 및 사용자 정의 유형은 jsonobject를 사용하여 구문 분석됩니다
* 맵은 객체로 이해 될 수 있으며 내부의 키/값 쌍은 객체의 속성/속성 값으로 이해할 수 있습니다.
* {key1 : value1, key2, value2 ...}입니다.
*
* 1.
* getJsonObject (키)를 통해 jsonObject를 얻을 수 있습니다 .-> 맵으로 변환,
* getJsonArray (키)를 통해 JSONARRAY를 얻을 수 있습니다.
*
*
*/
// 일반적으로 배열을 JSON으로 변환합니다
@시험
public void testarraytojson () {
부울 [] boolarray = new boolean [] {true, false, true};
JSONARRAY JSONARRAY = JSONARRAY.FROMOBJECT (BOALORRAY);
System.out.println (jsonarray);
// 인쇄 [참, 거짓, 참]
}
// 컬렉션 객체를 JSON으로 변환합니다
@시험
public void testlisttojson () {
목록 목록 = new ArrayList ();
list.add ( "첫 번째");
list.add ( "second");
jsonarray jsonarray = jsonarray.fromobject (list);
System.out.println (jsonarray);
// 인쇄 [ "첫 번째", "두 번째"]
}
// 문자열 JSON 변환, 상황에 따라 JSONARRAY 또는 JSONOBJECT를 사용하십시오.
@시험
public void testjsonstrojson () {
jsonarray jsonarray = jsonarray.fromobject ( "[ 'json', 'is', 'easy']");
System.out.println (jsonarray);
// prints [ "json", "is", "easy"]]
}
// jsonObject를 사용하여 맵을 JSON으로 변환합니다
@시험
public void testmaptojson () {
지도 맵 = new Hashmap ();
map.put ( "이름", "JSON");
map.put ( "bool", boolean.true);
map.put ( "int", 새 정수 (1));
map.put ( "arr", 새 문자열 [] { "a", "b"});
map.put ( "func", "function (i) {return this.arr [i];}");
jsonobject jsonobject = jsonobject.fromobject (map);
System.out.println (jsonobject);
}
// 콩을 JSON에 합성합니다
@시험
public void testbeadtojson () {
mybean bean = new mybean ();
bean.setid ( "001");
bean.setName ( "은행 카드");
bean.setDate (새 날짜 ());
list cardnum = new ArrayList ();
cardnum.add ( "농업 은행");
cardnum.add ( "ICBC");
cardnum.add ( "CCB");
cardnum.add (새로운 사람 ( "테스트"));
bean.setcardnum (cardnum);
jsonobject jsonobject = jsonobject.fromobject (bean);
System.out.println (jsonobject);
}
// 정상 유형의 json을 객체로 변환합니다
@시험
public void testjsontoobject ()는 예외 {
String JSON = "{name =/"json/", bool : true, int : 1, double : 2.2, function : function (a) {return a;}, 배열 : [1,2]}";
jsonobject jsonobject = jsonobject.fromobject (json);
System.out.println (jsonobject);
Object Bean = jsonobject.tobean (jsonobject);
AsserTequals (jsonobject.get ( "name"), propertyutils.getProperty (bean, "name"));
AsserTequals (jsonobject.get ( "bool"), propertyutils.getProperty (Bean, "bool");
AsserTequals (jsonobject.get ( "int"), propertyutils.getProperty (Bean, "int"));
AsserTequals (jsonobject.get ( "double"), propertyutils.getProperty (Bean, "double"));
AsserTequals (jsonobject.get ( "func"), propertyutils.getProperty (Bean, "func");
System.out.println (propertyutils.getProperty (Bean, "name"));
System.out.println (PropertyUtils.getProperty (Bean, "bool"));
System.out.println (propertyutil.getProperty (Bean, "int"));
System.out.println (propertyutil.getProperty (Bean, "double"));
System.out.println (propertyutil.getProperty (Bean, "func"));
System.out.println (propertyutil.getProperty (Bean, "array"));
목록 ArrayList = (list) jsonArray.tocollection (jsonObject.getJsonArray ( "array"));
for (Object Object : ArrayList) {
System.out.println (객체);
}
}
// 목록을 포함한 복합 유형 객체에 JSON을 구문 분석합니다
@시험
public void testjsontobeanhavalist () {
String json = "{list : [{name : 'test1'}, {name : 'test2'}], map : {test1 : {name : 'test1'}, test2 : {name : 'test2'}}}" ;
// String json = "{list : [{name : 'test1'}, {이름 : 'test2'}]}";
map classMap = new Hashmap ();
classMap.put ( "목록", person.class);
MyBeanWithperson Diybean = (MyBeanWithPerson) jsonobject.tobean (jsonobject.fromobject (json), myBeanWithPerson.class, classMap);
System.out.println (diybean);
목록 목록 = diybean.getList ();
for (object o : list) {
if (o 인스턴스 사람) {
사람 p = (사람) o;
System.out.println (p.getName ());
}
}
}
// JSON은 맵을 포함한 복합 유형 객체로 구문 분석합니다
@시험
public void testjsontobeanhavamap () {
// 맵을 객체로 생각합니다
String json = "{list : [{name : 'test1'}, {name : 'test2'}], map : {testone : {name : 'test1'}, testtwo : {name : 'test2'}}}" ;
map classMap = new Hashmap ();
classMap.put ( "목록", person.class);
classmap.put ( "map", map.class);
// 힌트 사용, JSON이 지정된 사용자 정의 객체에 직접 구문 분석하여 목록이 완전히 구문 분석되고지도가 완전히 구문 분석되지 않습니다.
MyBeanWithperson Diybean = (MyBeanWithPerson) jsonobject.tobean (jsonobject.fromobject (json), myBeanWithPerson.class, classMap);
System.out.println (diybean);
System.out.println ( "목록 릴리스");
목록 <person> list = diybean.getList ();
for (person o : list) {
사람 p = (사람) o;
System.out.println (p.getName ());
}
System.out.println ( "지도 릴리스");
// 트랜스포머를 레지스트리에 먼저 등록하면 Ezmorph 패키지에서 클래스를 사용해야합니다.
Morpherregistry MorpherRegistry = jsonutils.getMorpherRegistry ();
Morpher Dynamorpher = New Beanmorpher (Person.class, Morpherregistry);
MorpherRegistry.registerMorpher (Dynamorpher);
지도 맵 = diybean.getMap ();
/*여기에 맵에는 유형 힌트가 없으므로 기본값에 따르면 저장된 객체는 유형 net.sf.ezmorph.bean.morphdynabean*/입니다.
System.out.println (지도);
/*산출:
{readone=net.sf.ezmorph.bean.morphdynabean@f73c1 [
{name = test1}
], testtwo=net.sf.ezmorph.bean.morphdynabean@186c6b2 [
{name = test2}
]}
*/
list <person> output = new ArrayList ();
for (iterator i = map.values (). iterator (); i.hasnext ();) {
// 레지스트라를 사용하여 지정된 Dynabean에서 객체 변환을 수행합니다.
output.add ((사람) morpherregistry.morph (person.class, i.next ()));
}
for (person p : output) {
System.out.println (p.getName ());
/*산출:
테스트 1
시험 2
*/
}
}
}
5. 다음은 JAR 패키지 및 코드를 포함하여 위의 예에 필요한 리소스를 제공합니다.
/files/mailingfeng/json-lib/json-lib 사용 케이스에는 JAR 패키지와 Java 클래스가 필요합니다