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());

时间: 2024-07-30 18:40:24

Json系列之二 json to bean(JSONObject类详解)的相关文章

Json系列之一 bean To json(JSONObject类详解)

使用json-lib-2.4-jdk15.jar,依赖的包 1)commons-lang-2.6.jar 2)commons-beanutils-1.8.3.jar 3)commons-collections-3.2.1.jar 4)commons-logging-1.1.1.jar 5)ezmorph-1.0.6.jar bean to json相对是比较简单的,基本都采用以下办法: 方式一(常用) /** * Creates a JSONObject.<br> * Inspects the

json to bean(JSONObject类详解)

原博客地址:http://blog.csdn.net/harrison2010/article/details/43700991 1 方式一 2 /** 3 * Creates a JSONDynaBean from a JSONObject. 4 */ 5 public static Object toBean( JSONObject jsonObject ) 6 返回的数据类型明显不是我们常用的数据类型 7 8 方式二 9 /** 10 * Creates a bean from a JSO

vagrant系列教程(二):vagrant的配置文件vagrantfile详解(转)

原文:http://blog.csdn.net/hel12he/article/details/51089774 上一篇文章完整的讲叙了如何安装一个vagrant的环境.这里主要说一说vagrant的配置文件Vagrantfile.我在尝试各种技术的时候,常常苦恼于很多时候没有教程把相关的配置信息说明完整.所以在我的博客里,我一定会完整的把这块给补上. 一 配置详解 在我们的开发目录下有一个文件Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置.SSH配置.V

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

Web攻防系列教程之跨站脚本攻击和防范技巧详解

Web攻防系列教程之跨站脚本攻击和防范技巧详解[XSS] 收藏:http://www.rising.com.cn/newsletter/news/2012-04-25/11387.html 来源:瑞星 2012-04-25 14:33:46 摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性 以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了 有针对性的具体

转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解

目标大纲 文章转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解 IE中CSS-filter滤镜小知识大全

Android总结篇系列:Activity中几个主要函数详解

专注Android领域开发. 仰望星空,同时需要脚踏实地. ——好记性不如烂博客 Android总结篇系列:Activity中几个主要函数详解 Activity作为Android系统中四大基本组件之一,包含大量的与其他的各大组件.intent.widget以及系统各项服务等之间的交互的函数.在此,本文主要选取实际项目开发中常用的,但完全理解又需要有一定深入了解的几个函数进行讲解,后续本文会根据需要不断更新. 1. startActivityForResult / onActivityResult

Cocos2d之Node类详解之节点树(二)

一.声明 本文属于笔者原创,允许读者转载和分享,只要注明文章来源即可. 笔者使用cocos2d框架的cocos2d-x-3.3rc0版本的源代码做分析.这篇文章承接上篇<Cocos2d之Node类详解之节点树(一)>. 二.简介 节点 一个Node对象. 节点树 上篇文章介绍到,Node类有一个成员变量 Vector<Node*> _children,这是一个保存所有子节点的数组,因为Node类采用遍历树的方式获取子节点进行渲染,所以我管这两个东西的结合叫节点树. 三.源码详解 &

Android系列之Android 命令行手动编译打包详解

http://www.qdmm.com/BookReader/1222701,54263720.aspxhttp://www.qdmm.com/BookReader/1222701,54263869.aspxhttp://www.qdmm.com/BookReader/1222701,54263871.aspxhttp://www.qdmm.com/BookReader/1222701,54263876.aspxhttp://www.qdmm.com/BookReader/1222701,542