JSON教程之JSON-lib转换JSON为JavaBean

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值