Fastjson 源码地址:https://github.com/alibaba/fastjson
Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN
Fastjson API文档:https://www.w3cschool.cn/fastjson/fastjson-beantoarray.html
一、引入依赖
1)FastJson 是用于java后台处理json格式数据的一个工具包
2)FastJson 对于json格式字符串的解析主要用到了一下三个类:
(1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
(2)JSONObject:fastJson提供的json对象。
(3)JSONArray:fastJson提供json数组对象。
3)maven 引入依赖
com.alibaba
fastjson
1.2.47
二、测试demo
注意:JSON字符串是有格式要求的,必须为键值对形式,不是任意的字符串。
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private int id;
private String username;
private String pazzword;
private String sex;
private Date birthday;
private Integer status; //0:未激活, 1:激活
private Long ordinal; //序号
//get / set
}
1、javaBean,list,array 转 json string
String jsonString = JSON.toJSONString(object);
/**
* javaBean,list,array convert to json string
*
* @param obj
* @return
*/
public static String obj2json(Object obj) {
return JSON.toJSONString(obj);
}
public static void main(String[] args) {
User user = new User();
user.setId(100);
user.setUsername("李四");
user.setPazzword("lisi123");
user.setBirthday(new Date());
user.setSex("男");
user.setStatus(1);
user.setOrdinal(10L);
User user2 = new User();
user2.setId(101);
user2.setUsername("王五");
user2.setPazzword("wangwu123");
user2.setBirthday(new Date());
user2.setSex("女");
user2.setStatus(1);
user2.setOrdinal(11L);
System.out.println("=javaBean=\n" + obj2json(user));
ArrayList list = new ArrayList<>();
list.add(user);
list.add(user2);
System.out.println("=list=\n" + obj2json(list));
Object[] array = new Object[2];
array[0] = user;
array[1] = user2;
System.out.println("=array=\n" + obj2json(array));
}
2、json string 转 javaBean对象
T t = JSON.parseObject(jsonString, T.class);
public static void main(String[] args) {
String jsonStr = "{\"birthday\":1554885019427,\"id\":100,\"ordinal\":10,\"pazzword\":\"lisi123\",\"sex\":\"男\",\"status\":1,\"username\":\"李四\"}";
String jsonStr2 = "{\"birthday\":1554885019427,\"id\":100,\"ordinal\":10,\"pazzword\":\"lisi123\",\"sex\":\"男\",\"status11\":1}";
User user3 = JSON.parseObject(jsonStr, User.class);
System.out.println("=user=\n" + user3);
System.out.println("=user=\n" + JSON.parseObject(jsonStr2, User.class));
}
注意:javaBean对象 在 json string 中无对应字段时,值为 null
3、json string 转 JSONObject
JSONObject jsonObject = JSON.parseObject(jsonString);
String jsonStr = "{\"birthday\":1554885019427,\"id\":100,\"ordinal\":10,\"pazzword\":\"lisi123\",\"sex\":\"男\",\"status\":1,\"username\":\"李四\"}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
System.out.println(jsonObject);
System.out.println(jsonObject.get("sex"));
注意:JSONObject 可以通过键值对来获取值
三、复杂 jsonStr 的处理
之前有个业务小功能使用到了
public static void main(String[] args) {
List
单流程线不会出现着各种情况,由于是 多流程线,会多出现一个 节点3, 后面可根据需求进一步处理 nodesList 数据
参考文章:全解析史上最快JSON解析库
ends