json-lib总结

来源:互联网 发布:js 获取远程页面内容 编辑:程序博客网 时间:2024/06/05 03:35

工作中遇到json字符串转换问题,需要将json字符串数组转换成对象集合。据查询一般jackson对json的转换效率更好,关于jackson的简单用法请看博文“jackson简单用法总结。个人从网上搜集资料,现总结json-lib用法如下,希望对读者有所帮助。

代码及jar包下载链接:http://download.csdn.net/detail/jtianlin/4748498

public class User {
 
 private String username;
 private String address;

 setter&&getter....

}

 

public class BeanToJson {

 public static void main(String[] args) {
  
     //由对象转换成json字符串,用JSONObject
  User user = new User();
  user.setAddress("安徽");
  user.setUsername("张三");
  JSONObject jsonObject = JSONObject.fromObject(user);
  System.out.println(jsonObject); 
  //打印结果:{"address":"安徽","username":"张三"}
  
  //由list转换成json字符串,用JSONArray
  List<User> list = new ArrayList<User>();
  User user1 = new User();
  user1.setAddress("山东");
  user1.setUsername("李四");
  User user2 = new User();
  user2.setAddress("北京");
  user2.setUsername("王五");
  list.add(user1);
  list.add(user2);
  JSONArray jsonArray = JSONArray.fromObject(list);
  System.out.println(jsonArray);
  //打印结果:[{"address":"山东","username":"李四"},{"address":"北京","username":"王五"}]
 
  //下面方式错误,将list集合转换成json字符串必须使用jsonArray。
//  JSONObject jsonObject2 = JSONObject.fromObject(list);
//  System.out.println(jsonObject2);
  
  //由map转换成json字符串,用jsonObject
  Map<String,User> map = new HashMap<String,User>();
  map.put("user1", user1);
  map.put("user2", user2);
  JSONObject jsonObjectMap = JSONObject.fromObject(map);
  System.out.println(jsonObjectMap);
  //打印结果:{"user2":{"address":"北京","username":"王五"},"user1":{"address":"山东","username":"李四"}}
 
  //由set转换成json字符串,需要用JSONArray
     Set set = new HashSet();
     set.add(user1);
     set.add(user2);
     JSONArray jsonArraySet = JSONArray.fromObject(set);
  System.out.println(jsonArraySet);
  //打印结果:[{"address":"北京","username":"王五"},{"address":"山东","username":"李四"}]
 
 }
}

 

public class JsonToBean {
 
 public static void main(String[] args) {
  
  //由对象json字符串到java对象
  String jsonStr = "{\"address\":\"安徽\",\"username\":\"张三\"}";
  JSONObject jsonObject = JSONObject.fromObject(jsonStr);
  User user = (User)jsonObject.toBean(jsonObject, User.class);
  System.out.println(user);
  //打印结果:com.neusoft.jsonlib.User@17590db
  
  //由json字符串数组转换到java对象list集合
  String jsonListStr = "[{\"address\":\"山东\",\"username\":\"李四\"},{\"address\":\"北京\",\"username\":\"王五\"}]";
  JSONArray jsonObjectList = JSONArray.fromObject(jsonListStr);
  List<User> userList = (List<User>) jsonObjectList.toCollection(jsonObjectList, User.class);
  System.out.println(userList);
  //打印结果:[com.neusoft.jsonlib.User@1a7bf11, com.neusoft.jsonlib.User@1f12c4e]
  
  //由json字符串数组转换到java对象list集合
  String jsonSetStr = "[{\"address\":\"山东\",\"username\":\"李四\"},{\"address\":\"北京\",\"username\":\"王五\"}]";
  JSONArray jsonObjectSet = JSONArray.fromObject(jsonSetStr);
  List<User> userSet = (List<User>) jsonObjectList.toCollection(jsonObjectSet, User.class);
  System.out.println(userSet);
  //打印结果:[com.neusoft.jsonlib.User@1a7bf11, com.neusoft.jsonlib.User@1f12c4e]
  
 }

}

 

 

public class MapAndJson {
 
 public static void main(String[] args) {
  
  //由字符串map到json字符串
  Map<String,String> strMap = new HashMap<String,String>();
  strMap.put("1", "aaa");
  strMap.put("2", "ccc");
  JSONObject strMapJson = JSONObject.fromObject(strMap);
  System.out.println(strMapJson);
  //打印结果:{"2":"ccc","1":"aaa"}
  
  //由对象map转换到json字符串
  Map<String, User> userMap = new HashMap<String,User>();
  User user1 = new User();
  user1.setAddress("安徽");
  user1.setUsername("lisi");
  User user2 = new User();
  user2.setAddress("shandong");
  user2.setUsername("wangwu");
  userMap.put("user1", user1);
  userMap.put("user2", user2);
  JSONObject userMapJson = JSONObject.fromObject(userMap);
  System.out.println(userMapJson);
  //打印结果:{"user2":{"address":"shandong","username":"wangwu"},"user1":{"address":"安徽","username":"lisi"}}
  
 }

}

 

 

public class JsonXML {

 public static void main(String[] args) {

  // 将json字符串转换成XML对象
  XMLSerializer xmlSerializer = new XMLSerializer();
  JSONObject json2 = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}");
  String xmlStr = xmlSerializer.write(json2);
  System.out.println(xmlStr);
  /**
   * 打印结果:<?xml version="1.0" encoding="UTF-8"?> <o><bool
   * type="boolean">true</bool><int type="number">1</int><name
   * type="string">json</name></o>
   */

  // 将XML转换成json
  String str = "<o><bool type=\"string\">true</bool><int type=\"string\">1</int><name type=\"string\">json</name></o>";
  JSON jsonObject = new XMLSerializer().read(str);
  System.out.println(jsonObject);
  // 打印结果:{"bool":"true","int":"1","name":"json"}

  // 将对象写成XML格式
  User user = new User();
  user.setAddress("dongying");
  user.setUsername("lisi");
  JSONObject jsonUserObject = JSONObject.fromObject(user);
  String userStr = new XMLSerializer().write(jsonUserObject);
  System.out.println(userStr);
  /**打印结果:
   * <?xml version="1.0" encoding="UTF-8"?> <o><address type="string">dongying</address><username
   * type="string">lisi</username></o>
   */

  // 由xml到对象
  JSONObject userJsonObject = (JSONObject) new XMLSerializer()
    .read(userStr);
  User jsonUser = (User) JSONObject.toBean(userJsonObject, User.class);
  System.out.println(jsonUser);
  //打印结果:com.neusoft.jsonlib.User@1e97676
 }

}