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 object type to call the correct JSONObject factory method.
    * Accepts JSON formatted strings, Maps, DynaBeans and JavaBeans.
    *
    * @param object
    * @throws JSONException if the object can not be converted to a proper
    *         JSONObject.
    */
   public static JSONObject fromObject( Object object ) 

   方式二(过滤,特殊转换时使用)
   /**
    * Creates a JSONObject.<br>
    * Inspects the object type to call the correct JSONObject factory method.
    * Accepts JSON formatted strings, Maps, DynaBeans and JavaBeans.
    *
    * @param object
    * @throws JSONException if the object can not be converted to a proper
    *         JSONObject.
    */
   public static JSONObject fromObject( Object object, JsonConfig jsonConfig )

   例子代码,很复杂的数据类型:
   package json;

import java.util.Date;
import java.util.List;
import java.util.Map;

public class Person {
	private String name;
	private Date birthDay;
	private int age;
	private String nullStr;
	private String emptyStr;
	private boolean isLive;
	private List<Address> addresses;
	private Address baseAddress;
	private Map attrs;
	private Map sameTest;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthDay() {
		return birthDay;
	}
	public void setBirthDay(Date birthDay) {
		this.birthDay = birthDay;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

	public boolean isLive() {
		return isLive;
	}
	public void setLive(boolean isLive) {
		this.isLive = isLive;
	}
	public List<Address> getAddresses() {
		return addresses;
	}
	public void setAddresses(List<Address> addresses) {
		this.addresses = addresses;
	}
	public Map getAttrs() {
		return attrs;
	}
	public void setAttrs(Map attrs) {
		this.attrs = attrs;
	}
	public String getNullStr() {
		return nullStr;
	}
	public void setNullStr(String nullStr) {
		this.nullStr = nullStr;
	}
	public String getEmptyStr() {
		return emptyStr;
	}
	public void setEmptyStr(String emptyStr) {
		this.emptyStr = emptyStr;
	}
	public Map getSameTest() {
		return sameTest;
	}
	public void setSameTest(Map sameTest) {
		this.sameTest = sameTest;
	}
	public Address getBaseAddress() {
		return baseAddress;
	}
	public void setBaseAddress(Address baseAddress) {
		this.baseAddress = baseAddress;
	}

}

package json;

import java.util.List;

public class Address {
	private String address;
	private List<Person> sameTest;

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public List<Person> getSameTest() {
		return sameTest;
	}

	public void setSameTest(List<Person> sameTest) {
		this.sameTest = sameTest;
	}

}

    public static void main(String[] args) {
		 //一 object to json
		 String returnString = null;
		 Person p = new Person();
		 p.setAge(1);//验证数字
		 p.setBirthDay(new Date(System.currentTimeMillis()));//验证日期
		 p.setLive(true);//验证布尔类型
		 p.setName("xxx");//验证字符串
		 p.setNullStr(null);//验证null
		 p.setEmptyStr("");//验证“”字符串

		 Address address = new Address();
		 address.setAddress("base address");

		 p.setBaseAddress(address);//基本的bean类型

		 List<Address> list = new ArrayList<Address>();
		 Address address1 = new  Address();
		 address1.setAddress("address1");
		 Person sameTestPerson = new Person();
		 sameTestPerson.setName("sameName");
		 List<Person> sameNameList = new ArrayList<Person>();
		 sameNameList.add(sameTestPerson);
		 address1.setSameTest(sameNameList);//验证相同名字测试
		 list.add(address1);

		 Address address2 = new  Address();
		 address2.setAddress("address2");
		 list.add(address2);

		 p.setAddresses(list);//验证list集合

		 Map attrs = new HashMap();
		 attrs.put("key1", "value1");
		 attrs.put("key2", "value2");

		 p.setAttrs(attrs);//验证map集合

		 Map sameTest = new HashMap();
		 sameTest.put("sameName1", "sameNamevalue1");
		 sameTest.put("sameName2", "sameNamevalue2");
		 p.setSameTest(sameTest);//验证相同名字测试

		 returnString = JSONObject.fromObject(p).toString();
	}

	这些对象及产生的json数据会为 json to bean的博文服务。

时间: 2024-08-27 13:01:57

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

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

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

Android中内容观察者的使用---- ContentObserver类详解

  转载请注明出处:http://blog.csdn.net/qinjuning 前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了 ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结. ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于 数据库技术中的触发器(Trigger),当ContentObs

QAction类详解:

先贴一段描述:Qt文档原文: Detailed Description The QAction class provides an abstract user interface action that can be inserted into widgets. In applications many common commands can be invoked via menus, toolbar buttons, and keyboard shortcuts. Since the user

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba

C++虚基类详解

1.虚基类的作用从上面的介绍可知:如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员.在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,如    c1.A::display( ).在一个类中保留间接共同基类的多份同名成员,这种现象是人们不希望出现的.C++提供虚基类(virtual base class )的方法,使得在继承间接共同基类时只保留一份成员.现在,将类A声明为

URLConnection类详解

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3753224.html URLConnection概述 URLConnection是一个抽象类,表示指向URL指定资源的活动连接. URLConnection类本身依赖于Socket类实现网络连接.一般认为,URLConnection类提供了比Socket类更易于使用.更高级的网络连接抽象.但实际上,大多数程序员都会忽略它

ThreadLocal类详解

众所周知,ThreadLocal对象可以每一个线程保存一份值,可以避免因线程间共享数据带来的问题. 其实现的原理,大致如下,具体的可以参考JDK里的源码. Thread类中,有一个threadLocals字段,它是ThreadLocalMap类型(ThreadLocal里的一个静态内部类).该字段存放当前线程下,所有与ThreadLocal相关的值.该对象是一个Map,key为ThreadLocal对象,value为所存放的值. 在ThreadLocal类里,有两个重要的方法:set()和get

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

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