Java / 学习 / 问题 · 2020年7月4日 0

fastjson序列化时自定义排序规则

近日编写接口时发现阿里的fastjson会自动将属性排序,但是我想用我自己的排序方式,查阅相关资料后发现:
在实体类前加注解@JSONType(orders = { "xxx","xxx"})即可解决。
附我使用时的上下文代码
import com.alibaba.fastjson.annotation.JSONType;
/**
 * Author: Xiao Bao
 * Date: 2020/7/1
 * Description: PACKAGE: myapp6_3.entity
 * version: 1.0
 */


//设置排序规则
@JSONType(orders = { "resultcode", "reason","result","error_code"})
public class Reg6_3 {

    /**
     * resultcode : 200
     * reason : successed!
     * result : [{"code":1,"message":"发送成功"}]
     * error_code : 0
     */

    private int resultcode;
    private String reason;
    private int error_code;
    private List result;

    public int getResultcode() {
        return resultcode;
    }

    public void setResultcode(int resultcode) {
        this.resultcode = resultcode;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public int getError_code() {
        return error_code;
    }

    public void setError_code(int error_code) {
        this.error_code = error_code;
    }

    public List getResult() {
        return result;
    }

    public void setResult(List result) {
        this.result = result;
    }

    public static class ResultBean {
        /**
         * code : 1
         * message : 发送成功
         */

        private int code;
        private String message;

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }
    }
}
自动排序:{"error_code":0,"reason":"Connect Succeed!","result":[{"code":1,"message":"461714"}],"resultcode":200}
自定义后:{"resultcode":200,"reason":"Connect Succeed!","result":[{"code":1,"message":"174963"}],"error_code":0}

笔记:FastJson直接解析取值

JSONObject.parseObject("json字符串").getJSONObject("data").getString("键名");