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