本节为如何用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 List
girlfriends;
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; } }