概述
Fastjson 是阿里巴巴开发的一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.38</version>
</dependency>
对象转String
创建JsonUser对象
public class JsonUser {
private Long id;
//序列化时name对应的键改为NAME
@JSONField(name = "NAME")
private String name;
//序列化时格式化日期
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//get set 方法
}
JSON.toJSONString()方法可以将任意对象转为JSON字符串。
@Test
public void ObjecttoString(){
JsonUser jsonUser = new JsonUser();
jsonUser.setId(1001L);
jsonUser.setName("zhangsan");
jsonUser.setCreateTime(new Date());
String s = JSON.toJSONString(jsonUser);
System.out.println(s);
}
String转对象
@Test
public void stringToObject(){
String s ="{\"NAME\":\"zhangsan\",\"createTime\":\"2020-09-22 10:41:21\",\"id\":1001}";
//方式一
JsonUser jsonUser = JSON.toJavaObject(JSON.parseObject(s), JsonUser.class);
//方式二
JsonUser jsonUser2 = JSON.parseObject(s, JsonUser.class);
System.out.println(jsonUser2);
System.out.println(jsonUser);
}
集合与String互转
@Test
public void arrayToString(){
List<JsonUser> list = new ArrayList<JsonUser>();
list.add(new JsonUser(1001L, "zhangsan", new Date()));
list.add(new JsonUser(1002L, "lisi", new Date()));
list.add(new JsonUser(1003L, "wangwu", new Date()));
list.add(new JsonUser(1004L, "zhaoliu", new Date()));
//方式1
String s = JSON.toJSONString(list);
//方式2 JSONArray:相当于List< Object>
JSONArray jsonArray = new JSONArray(Collections.singletonList(list));
String s1 = jsonArray.toJSONString();
System.out.println(s);
System.out.println(s1);
}
@Test
public void stringToArray(){
String s ="[{\"NAME\":\"zhangsan\",\"createTime\":\"2020-09-22 10:54:10\",\"id\":1001},{\"NAME\":\"lisi\",\"createTime\":\"2020-09-22 10:54:10\",\"id\":1002},{\"NAME\":\"wangwu\",\"createTime\":\"2020-09-22 10:54:10\",\"id\":1003},{\"NAME\":\"zhaoliu\",\"createTime\":\"2020-09-22 10:54:10\",\"id\":1004}]\n";
//方式一:
List<JsonUser> list = JSON.parseArray(s, JsonUser.class);
//方式二;
List<JsonUser> list1 = JSON.parseObject(s, new TypeReference<List<JsonUser>>() {
});
list.forEach(ju->{
System.out.println(ju);
});
list1.forEach(ju->{
System.out.println(ju);
});
}
Map与String互转
@Test
public void mapToString(){
Map<String,String> map = new HashMap<>();
map.put("name", "zhangsan");
map.put("age", "21");
map.put("sex", "nan");
String s = JSON.toJSONString(map);
System.out.println(s);
}
@Test
public void stringToMap(){
String s ="{\"sex\":\"nan\",\"name\":\"zhangsan\",\"age\":\"21\"}";
//方式一
Map maps = (Map)JSON.parse(s);
// JSONObject是Map接口的一个实现类 ,相当于是Map<String, Object>
Map map2= JSON.parseObject(s);
Map map3 = (Map) JSONObject.parse(s);
for (Object map : maps.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" " + ((Map.Entry)map).getValue());
}
}