Java中fastjson库将Map、JSON、String相互转换
json就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {"name": "Kobe"} 可以理解为是一个包含name为Kobe的对象
而[{"name": "Michael"},{"name": "Kobe"}]就表示包含两个对象的数组
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>
1 public static final Object parse(String text); // 把JSON文本转换成JSONObject或者JSONArray
2 public static final JSONObject parseObject(String text); // 把JSON文本转换成JSONObject
3 public static final JSONArray parseArray(String text); // 把JSON文本转换成JSONArray
4 public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本转换成JavaBean
5 public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本转换成JavaBean集合
6 public static final String toJSONString(Object object);// 将JavaBean序列化为JSON文本
7 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
8 public static final Object toJson(Obiect javaObject);//将JavaBean转换为JSONObject或者JSONArray
Map转JSON
Map转JSON
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", "yaomy");
map.put("password", "123");
JSONObject json = new JSONObject(map);
JSON转String
JSONObject json = new JSONObject();
json.put("username", "yaomy");
json.put("password", "123");
json.toJSONString();
JSON转Map
JSONObject json = new JSONObject();
json.put("username", "yaomy");
json.put("password", "123");
Map<String, Object> map = (Map<String, Object>)json;
String转JSON
String str = "{\"username\":\"yaomy\",\"password\":\"123\"}";
JSONObject json = JSONObject.parseObject(str);
对象转Json
User user = new User();
user.setId("1");
user.setName("Jerry");
String json = JSON.toJSONString(user);
Json转对象
public class JavaDemo05 {
public static void main(String[] args) {
String json = "{\"name\":\"cc\",\"id\":24}";
User user = JSON.parseObject(json, User.class);
System.out.println(user);
}
}
List转Json
List<User> list = new ArrayList<>();
list.add(new User(1,"Jerry"));
list.add(new User(2,"Anne"));
list.add(new User(3,"Jack"));
String json = JSON.toJSONString(list);
格式化日期
public class JavaDemo05 {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(JSON.toJSONString("输出毫秒值:" + date));
System.out.println(JSON.toJSONString("默认格式:" + date, SerializerFeature.WriteDateUseDateFormat));
System.out.println("自定义格式:" + JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));
}
}
Fri Oct 09 11:54:11 CST 2020
"输出毫秒值:Fri Oct 09 11:54:11 CST 2020"
"默认格式:Fri Oct 09 11:54:11 CST 2020"
自定义格式:"2020-10-09"
字符数组JSON转化为数组
String s = "[{\"name\":\"aa\",\"id\":10},{\"name\":\"bb\",\"id\":20}]";
List<User> list = JSON.parseArray(s,User.class);
for (User user : list) {
System.out.println(user);
}
复杂数据类型
Map<String,Object> map = new HashMap<>();
map.put("username","Jerry");
map.put("age",24);
map.put("sex","男");
Map<String,Object> map2 = new HashMap<>();
map2.put("name","Jack");
map2.put("age",22);
map.put("data",map2);
List<String> list = new ArrayList<>();
list.add("爬山");
list.add("骑车");
list.add("跑步");
map.put("hobby",list);
JSONObject jsonObject = new JSONObject(map);
System.out.println(jsonObject);
{"data":{"name":"Jack","age":22},"sex":"男","age":24,"username":"Jerry","hobby":["爬山","骑车","跑步"]}
String str = "[{'name': 'Jerry','age': '123','id':'12'},{'name': 'Anne','age': '234','id': '456'}]";
JSONArray jsonArray = JSONArray.parseArray(str);
for (Object o : jsonArray) {
JSONObject jsonObject = (JSONObject) o;
String name = (String) jsonObject.get("name");
System.out.println("name:" + name);
}