背景:
由于接口需要对body的参数进行加密, 所以将请求的dto通过
JSONObject.toJSONString(demoDto)
转成json字符串进行加密处理, 但是由于客户端设置的各个属性和我们这边不一致导致加密处理的加密字符串不一致, 于是通过设置输出json字符串时需要规定属性的顺序,客户端和服务端的属性设置同样顺序即可解决该问题
问题解决
使用注解设置顺序
@JSONType(orders = {
"uname", "name", "age"
})
示例代码
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONType;
import lombok.Data;
public class JsonDemo {
@Data
@JSONType(orders = {
"uname", "name", "age"
})
public static class DemoDto{
private String name;
private String uname;
private Integer age;
}
public static void main(String[] args) {
DemoDto demoDto = new DemoDto();
demoDto.setName("name测试");
demoDto.setUname("uname测试");
demoDto.setAge(12);
System.out.println(JSONObject.toJSONString(demoDto));
}
}
执行效果: