本文中使用到的Json Jar : fastjson-1.1.40.jar
首先是两个JavaBean
- User.java
- Person.java (里面关联了User)
JavaBean代码
public class User {
private String id;
private String username;
private String password;
public User() {
super();
}
public User(String id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password="
+ password + "]";
}
}
public class Person {
private String name;
private User user;
public Person(String name, User user) {
super();
this.name = name;
this.user = user;
}
public Person() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Person [name=" + name + ", user=" + user + "]";
}
}
Json 解析
/**
* 字符串转Json
* @param str
* @return
*/
public static JSONObject strToJson (String str){
//String user = "{'id':'1','username':'admin','password':'123456'}";
JSONObject json = (JSONObject) JSONObject.parse(str);
String id = (String) json.get("id");
String username = (String) json.get("username");
String password = (String) json.get("password");
return json;
}
/**
* JavaBean转字符串
* @param object
* @return
*/
public static String javaBeanToStr (Object object){
String json = JSON.toJSONString(object);
return json;
}
/**
* JavaBean转字符串 - 只显示某些特定字段
* @return
*/
public static String javaBeanToStrTwo (Object object){
//只显示User中的 admin 和 password 字段
SimplePropertyPreFilter filter =
new SimplePropertyPreFilter(User.class, "username","password");
String json =JSON.toJSONString(object,filter);
return json;
}
/**
* List集合转字符串 - 可只显示特定字符串
* @param list
* @return
*/
public static String listToStr (List list){
//只显示User中的 admin 和 password 字段
SimplePropertyPreFilter filter =
new SimplePropertyPreFilter(User.class, "username","password");
String json =JSON.toJSONString(list,filter);
//String json =JSON.toJSONString(list);
return json;
}
/**
* List集合转字符串 - JavaBean带子JavaBean
* @param list
* @return
*/
public static String listToStrTwo (List list){
String json =JSON.toJSONString(list);
return json;
}
/**
* 字符串转List集合 -
* 字符串格式 : [{...},{...},{...}]
* @param json
* @return
*/
public static List<User> strToList(String json){
List<User> users =
JSON.parseObject(json, new TypeReference<List<User>>(){});
return users;
}
/**
* 字符串转List集合 - JavaBean带子JavaBean
* 字符串格式 : [{"":"","JavaBean中的子JavaBean的属性名":{..}}]
* 例:Person 类中有 User属性,属性名为user
* 例:[{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}]
* @return
*/
public static List<Person> strToListTwo (String json){
List<Person> persons =
JSON.parseObject(json, new TypeReference<List<Person>>(){});
return persons;
}
/**
* 字符串转Map集合
* 字符串格式 : {"Map键值":{ JavaBean属性 : 属性值 }}
* 例:{"张三":{"id":"1","password":"password","username":"admin"}}
* @param json
* @return
*/
public static Map<String, User> strToMap (String json){
Map<String, User> map= (Map<String, User>) JSON.parse(json);
return map;
}
/**
* Map集合转字符串
* @param map
* @return
*/
public static String mapToStr (Map<String, User> map){
String json = JSON.toJSONString(map);
return json;
}
/**
* Json添加Json
*/
@Test
public void add (){
JSONObject json = new JSONObject();
json.put("username", "admin");
//{"username":"admin"}
}
/**
* Json添加Json
*/
@Test
public void add1 (){
JSONObject json = new JSONObject();
User user = new User("1","admin", "password");
json.put("name", "李四");
json.put("user", user);
System.out.println(json);
//{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}
}
/**
* Json数组添加Json
* 例 : [{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}]
*/
@Test
public void add2 (){
// 第一步
JSONObject jsonObject = new JSONObject();
User user = new User("1","admin", "password");
jsonObject.put("name", "李四");
jsonObject.put("user", user);
// 第二步
JSONArray json = new JSONArray();
json.add(0, jsonObject);
System.out.println(json);
}
测试代码
//测试strToJson
String user = "{'id':'1','username':'admin','password':'123456'}";
JSONObject strToJson = strToJson(user);
//测试javaBeanToStr
User user2 = new User("1","admin", "password");
String javaBeanToStr = javaBeanToStr(user2);
//测试javaBeanToStrTwo
String javaBeanToStrTwo = javaBeanToStrTwo(user2);
//测试 listToStr
List<User> list = new ArrayList<User>();
User user4 = new User("1","admin", "password");
User user3 = new User("1","admin", "password");
list.add(user4);
list.add(user3);
String listToStr = listToStr(list);
//测试 strToList
List<User> strToList = strToList(listToStr);
//测试 listToStrTwo
List<Person> persons = new ArrayList<Person>();
User user5 = new User("1","admin", "password");
Person person = new Person("李四", user5);
persons.add(person);
String listToStrTwo = listToStrTwo(persons);
//[{"name":"李四","user":{"id":"1","password":"password","username":"admin"}}]
//测试 strToListTwo
listToStrTwo =
"[{\"name\":\"李四\",\"user\":{\"id\":\"1\",\"password\":\"password\",\"username\":\"admin\"}}]";
List<Person> strToListTwo = strToListTwo(listToStrTwo);
//测试 mapToStr
Map<String, User> map = new HashMap<String, User>();
map.put("张三", user2);
String mapToStr = mapToStr(map);
//{"张三":{"id":"1","password":"password","username":"admin"}}
//测试 strToMap
Map<String, User> strToMap = strToMap(mapToStr);