对象转json字符串: JSONObject.toJsonString(对象)
json字符串转对象: JSONObject.parseObject(json字符串,对象.cLass);
数组或者集合转json字符串:JSONArray.toJsonString(对象)
json字符串转数组或集合: JSONObject.parseArray( json字符串,数组或集合中元素对象.cLass);
数组、集合、JSON字符串之间的转换
JSONArray继承与JSON
public static void main(String[] args) {
//-----------------------数组和JSON字符串的转换----------------------------
String[] name = {"张三","李四","王五","赵六"};
System.out.println(name);//[Ljava.lang.String;@14ae5a5
System.out.println(Arrays.toString(name));//[张三, 李四, 王五, 赵六]
//将对象转换为JSON格式的字符串
String str = JSONArray.toJSONString(name);
System.out.println(str);//["张三","李四","王五","赵六"]
//-----------------------集合和JSON的转换----------------------------
List list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
System.out.println(list);//[张三, 李四, 王五]
//将对象转换为JSON格式的数组
String str = JSONArray.toJSONString(list);
System.out.println(str);//["张三","李四","王五"]
//json字符串转换为list对象 第一个参数为json字符串,第二个参数为要转换的对象类型
List<String> list1 = JSONArray.parseArray(str, String.class);
System.out.println(list1);//[张三, 李四, 王五]
//-----------------------数组和集合的转换----------------------------
String[] strings = list1.stream().toArray(String[]::new);
System.out.println(strings);//[Ljava.lang.String;@1a93a7ca
}
对象集合
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User(1, "张三", 31));
list.add(new User(2, "王五", 18));
list.add(new User(3, "赵六", 15));
list.add(new User(4, "李奇", 28));
System.out.println(list);
//[User{id=1, name='张三', age=31}, User{id=2, name='王五', age=18}, User{id=3, name='赵六', age=15}, User{id=4, name='李奇', age=28}]
//list转成集合
String jsonString = JSONArray.toJSONString(list);
System.out.println(jsonString);
//[{"age":31,"id":1,"name":"张三"},{"age":18,"id":2,"name":"王五"},{"age":15,"id":3,"name":"赵六"},{"age":28,"id":4,"name":"李奇"}]
//JSON字符串转成集合
List<User> list1 = JSONArray.parseArray(jsonString, User.class);
System.out.println(list1);
//[User{id=1, name='张三', age=31}, User{id=2, name='王五', age=18}, User{id=3, name='赵六', age=15}, User{id=4, name='李奇', age=28}]
}
键值对与JSON字符串的转换
JSONObject继承与JSON
public static void main(String[] args) {
Map<Object, Object> map = new HashMap<>();
map.put("丈夫1","妻子1");
map.put("丈夫2","妻子2");
map.put("丈夫3","妻子3");
map.put("丈夫4","妻子4");
System.out.println(map);//{丈夫2=妻子2, 丈夫1=妻子1, 丈夫4=妻子4, 丈夫3=妻子3}
//map转换为字符串
String s = JSONObject.toJSONString(map);
System.out.println(s);//{"丈夫2":"妻子2","丈夫1":"妻子1","丈夫4":"妻子4","丈夫3":"妻子3"}
//字符串转换为map
Map map1 = JSONObject.parseObject(s, Map.class);//map.getClass
System.out.println(map1);//{丈夫2=妻子2, 丈夫1=妻子1, 丈夫4=妻子4, 丈夫3=妻子3}
}
键值对加对象与JSON的转换
键值对里的对象不能直接解析处理,要进行二次解析。
public static void main(String[] args) {
Map<String, User> map = new HashMap<>();
map.put("张三", new User(1, "张三", 31));
map.put("王五", new User(2, "王五", 18));
map.put("赵六", new User(3, "赵六", 15));
map.put("李奇", new User(4, "李奇", 28));
System.out.println(map);
//{张三=User{id=1, name='张三', age=31}, 李奇=User{id=4, name='李奇', age=28}, 王五=User{id=2, name='王五', age=18}, 赵六=User{id=3, name='赵六', age=15}}
//把map转换成JSON字符串
String jsonString = JSONObject.toJSONString(map);
System.out.println(jsonString);
//{"张三":{"age":31,"id":1,"name":"张三"},"李奇":{"age":28,"id":4,"name":"李奇"},"王五":{"age":18,"id":2,"name":"王五"},"赵六":{"age":15,"id":3,"name":"赵六"}}
//json字符串转换为map
List<User> lists = new ArrayList<>();
Map map1 = JSONObject.parseObject(jsonString, Map.class);
map1.forEach((k,v)->{
lists.add(JSONObject.parseObject(v.toString(),User.class));
});
System.out.println(lists);
//[User{id=1, name='张三', age=31}, User{id=4, name='李奇', age=28}, User{id=2, name='王五', age=18}, User{id=3, name='赵六', age=15}]
}