参考资料:http://swiftlet.net/archives/category/json,十分感谢~
平时做项目,难免有遇到使用json对象的时候,这个东西不难,但是一不使用久了,就会忘记,所以把它的基本用法写一下。
前提: 导入相关的jar文件:
commons-lang-1.0.4.jar
commons-collections-2.1.jar
commons-beanutils-1.8.0.jar
json-lib-2.4.jar
ezmorph-1.0.6.jar
commons-logging-1.1.jar
然后就可以开发啦~
一)javaBean转换为json
(1)先写一个javaBean
public class User implements Serializable{ private static final long serialVersionUID = 1L; private String username; private 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; } }
然后就把这个javaBean转换为JSONObject:
public static void main(String[] args) { //javaBean对象转换为json字符串 User user = new User(); user.setUsername("Rime"); user.setPassword("1234"); JSONObject json1 = JSONObject.fromObject(user); System.out.println(json1.toString()); //map转换为json字符串 HashMap<Object,Object> userMap = new HashMap<Object,Object>(); userMap.put("username", "Rime"); userMap.put("password", "1234"); JSONObject json2 = JSONObject.fromObject(userMap); System.out.println(json2.toString()); }
输出的内容如下:
{"password":"1234","username":"Rime"}
{"username":"Rime","password":"1234"}
看到这里,你可能会有疑问,是不是什么对象都能够转换为JSONObject呢?答案当然是:不。
JSONObject.fromObject(Object object)方法只对以下集中类型的对象有效:JSON formatted strings,Maps,DynaBeans and JavaBeans。
【注意】DynaBeans是commons-beanutils定义的动态bean。DynaBean并不是Java中所定义的Bean,而是一种"假"的Bean。因为它并不是通过getXXX和setXXX方法,对XXX属性进行取值和设值的。
如果object是其他类型的参数呢?比如说数字,逻辑值,非json格式的字符串,那么将生产空的JSONObject对象。