Json系列之二 json to bean(JSONObject类详解)

	方式一
	/**
    * Creates a JSONDynaBean from a JSONObject.
    */
   public static Object toBean( JSONObject jsonObject ) 
	返回的数据类型明显不是我们常用的数据类型
    
	方式二
	/**
    * Creates a bean from a JSONObject, with a specific target class.<br>
    */
	public static Object toBean( JSONObject jsonObject, Class beanClass ) 

	方式三(常用)
	/**
    * Creates a bean from a JSONObject, with a specific target class.<br>
    * If beanClass is null, this method will return a graph of DynaBeans. Any
    * attribute that is a JSONObject and matches a key in the classMap will be
    * converted to that target class.<br>
    * The classMap has the following conventions:
    * <ul>
    * <li>Every key must be an String.</li>
    * <li>Every value must be a Class.</li>
    * <li>A key may be a regular expression.</li>
    * </ul>
    */
   public static Object toBean( JSONObject jsonObject, Class beanClass, Map classMap ) 
	
 
	方式四
	/**
    * Creates a bean from a JSONObject, with the specific configuration.
    */
   public static Object toBean( JSONObject jsonObject, JsonConfig jsonConfig )
	方式2其实最终调用的就是方式四,看来jsonConfig对象很重要,决定了最后返回的数据类型,当然还远不至于这些。
	方式3也最终调用的是方式4


	方式五(常用)
	/**
    * Creates a bean from a JSONObject, with the specific configuration.
    */
   public static Object toBean( JSONObject jsonObject, Object root, JsonConfig jsonConfig )
	直接对已有对象的处理,把json的数据写入到已有对象中。

	比较常用的方式三与方式五
	例子:接着bean to json的代码
	
	//二 json to object
		 
		 JSONObject jsonObject = JSONObject.fromObject(returnString);
		 Object returnObject = null;
		 //办法一 class+map config的方式三
		 Map config = new  HashMap();
	     config.put("addresses", Address.class);
	     config.put("sameTest", Person.class);
		 returnObject = JSONObject.toBean(jsonObject, Person.class,config);
		 System.out.println(returnObject);
		 
		 //办法二 object+JsonConfig方式五
		 p = new Person();
		 JsonConfig jc = new JsonConfig();
		 jc.setClassMap(config);
		 jc.setNewBeanInstanceStrategy(new NewBeanInstanceStrategy() {
			@Override
			public Object newInstance(Class target, JSONObject source)
					throws InstantiationException, IllegalAccessException,
					SecurityException, NoSuchMethodException, InvocationTargetException {
				  if( target != null ){
			            if(target.getName().equals(Map.class.getName())){
			            	return new HashMap();
			            }
					  	return NewBeanInstanceStrategy.DEFAULT.newInstance(target, source);
			         }
				
				return null;
			}
		});
		 JSONObject.toBean(jsonObject, p, jc);
		 System.out.println(p.getAddresses().get(0).getAddress());
	

	

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hassen2010

你的鼓励我能输出跟多的好文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值