工作中遇到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
}
}