本節爲如何用JSON-lib把一個JSON對象,轉換爲一個JavaBean。
1、首先根據JSON層次結構,定義對應的JavaBean類,如果JSON對象中嵌套對象,需要定義相應的對象,JavaBean中的屬性名稱必須和JSON中的保持一致
2、把JSON轉換爲JavaBean
JSONObject obj=JSONObject.fromObject(jsonStr);
Boy boy=(Boy) obj.toBean(obj, Boy.class);
如果JavaBean中包含有集合,並且集合中包含有其他的對象,這時候,需要定義一個Map對象,Key值爲集合的名字,Value值爲集合對象的Class
JSONObject obj=JSONObject.fromObject(jsonStr);
Map<String,Class> map=new HashMap<String, Class>();
map.put("girlfriends", GirlFriend.class);
Boy boy=(Boy) obj.toBean(obj, Boy.class,map);
3、下面爲一個示例:
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
/**
* json-lib解析例類:JSON轉換爲JavaBean對象
* 主jar包:json-lib-2.4.jdk15.jar
* 依賴的jar包:commons-beanutils-1.8.0.jar commons-collections-3.2.1.jar commons-lang-2.5.jar ezmorgh-1.0.6.jar
* @author yuan
*
*/
public class OfficialJSONToJavaBean {
/**
* JSON To JavaBean 示例,非通用
* @param jsonStr
*/
public static void jsonToBean(String jsonStr){
JSONObject obj=JSONObject.fromObject(jsonStr);
Map map=new HashMap();
map.put("girlfriends", GirlFriend.class);
Boy boy=(Boy) obj.toBean(obj, Boy.class,map);
System.out.println(boy.getName()+"有"+boy.getGirlfriends().size()+"個女朋友!第一個女朋友的胸圍是"+boy.getGirlfriends().get(0).getBust()+",爸爸的名字是:"+boy.getFamily().getFather());
}
public static void main(String[] args) {
String jsonStr="{'name':'yuan','sex':'male','age':'100','family':{'father':'laowang','mother':'xiaofang'},'girlfriends':[{'name':'lily','bust':'36D'},{'name':'lucy','bust':'38D'},{'name':'lily','bust':'32A'}]}";
OfficialJSONToJavaBean.jsonToBean(jsonStr);
}
}
/**
* example json string
{
"name": "yuan",
"sex": "male",
"age": "100",
"family":{
"father":"laowang",
“mother":"xiaofang"
},
"girlfriends": [
{
"name": "lily",
"bust": "36D"
},
{
"name": "lucy",
"bust": "38D"
},
{
"name": "lily",
"bust": "32A"
}
]
}
* */
import java.util.List;
/**
* Boy對象
* @author Yuan
*
*/
public class Boy {
private String name;
private int age;
private String sex;
private Listgirlfriends;
private Family family;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public List getGirlfriends() {
return girlfriends;
}
public void setGirlfriends(List girlfriends) {
this.girlfriends = girlfriends;
}
public Family getFamily() {
return family;
}
public void setFamily(Family family) {
this.family = family;
}
}
/**
* 女朋友對象
* @author Yuan
*
*/
public class GirlFriend {
private String name;
private String bust;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBust() {
return bust;
}
public void setBust(String bust) {
this.bust = bust;
}
}
/**
* Family對象
* @author Yuan
*
*/
public class Family {
private String father;
private String mother;
public String getFather() {
return father;
}
public void setFather(String father) {
this.father = father;
}
public String getMother() {
return mother;
}
public void setMother(String mother) {
this.mother = mother;
}
}