对接接口需要发送json数据,我想按照接口文档上的顺序,输出json,所以才有了这篇文章
刚开始用JSONObject.toJSON(),里面直接放对象,dto里设置排序也不起作用,尝试各种方法后,所以先转json字符串,然后在转成对象时加上Feature.OrderedField,保证转成对象后顺序一致
本文中JSONObject用的版本是fastjson 1.2.68
- DTO中加上@JSONType注解,orders里放的是json字符串的排序,@JSONField(format="yyyy-MM-dd HH:mm:ss")这个是因为有字段是日期类型的,进行处理。此处只设置一个DTO,另一个类似
@Data
@JSONType(orders={"serviceTime","zoning"})
public class EvaluatePersonDTO implements Serializable {
//服务时间
@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Date serviceTime;
//区划
private String zoning;
}
- 需要调用的类中,json对象放多个dto时,顺序会变化,加上设置JSONObject(true),保证出来对象顺序正常,