生成JSONObject一般有两种方式,通过javabean或者map类型来生成。如下面的例子:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class User {     public String username;     public String password;     public String getUsername()     {       return username;     }     public void setUsername(String username)     {       this.username = username;     }     public String getPassword()     {        return password;     }     public void setPassword(String password)     {        this.password = password;     } } | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.HashMap; import net.sf.json.JSONObject; public class Test { public static void main(String args[]) {     User user = new User();     user.setUsername("root");     user.setPassword("1234");     JSONObject json1 = JSONObject.fromObject(user);     System.out.println(json1.toString());     HashMap<Object,Object> userMap= new HashMap<Object,Object>();     userMap.put("username", "root");     userMap.put("password", "1234");     JSONObject json2 = JSONObject.fromObject(userMap);     System.out.println(json2.toString()); } } | 
下面从源码层次分析一下JSONObject.fromObject()方法:
| 1 2 3 4 | public static JSONObject fromObject(Object object) {     return fromObject(object, new JsonConfig()); } | 
此函数可以接受的参数类型为:JSON formatted strings,Maps,DynaBeans and JavaBeans。
【注意】DynaBeans是commons-beanutils定义的动态bean。DynaBean并不是Java中所定义的Bean,而是一种"假"的Bean。因为它并不是通过getXXX和setXXX方法,对XXX属性进行取值和设值的。
如果object是其他类型的参数呢?比如说数字,逻辑值,非json格式的字符串,那么将生产空的JSONObject对象。
| 1 2 3 4 | if (JSONUtils.isNumber(object) || JSONUtils.isBoolean(object) || JSONUtils.isString(object)) {     return new JSONObject(); } | 
JSONObject的构造函数有两个:
| 1 2 3 4 5 6 7 8 9 | public JSONObject() {         this.properties = new ListOrderedMap(); } public JSONObject(boolean isNull) {         this();         this.nullObject = isNull; } | 
不过,说实话,第二个构造函数使用情况很少。
原文:http://www.cnblogs.com/doudouxiaoye/p/5693333.html