解析后自动重新排序了,我只能换回Gson。
[alibaba/fastjson]解析后自动重新排序怎么办?
回答
show testcase plz
{“statecode”:"0","msg":"登录成功"} ,我用JSON.toJSONString上面的数据后就成了,{"msg":"登录成功","statecode":"0"} 字段的顺序按字母排序了,我要的是返回的原来的顺序。
这两个语义上是相等的, 能问一下你需要保序性的原因吗
JSON.parseObject("....", Feature.OrderedField); // 这个可以保持顺序
public static <T> String parseObjToJson(T object) {
String string = null;
try {
string = JSON.toJSONString(object);
//string = JSONObject.toJSONString(object);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return string;
}
楼上说的是对象转json之后,转出来的属性乱序了,而不是 @wenshao 说的把Json转Java对象顺序没了。 这个怎么控制呢?
Json.toJsonString后和POJO字段顺序不一样,有好的解决办法吗
@wenshao
issues里好多类似的诉求呢
@wenshao 同样的诉求。。
这个对象转成json之后,属性顺序不变,这个需求,fastjson是可以做到的。 fastjson之@JSONField注解的几个的使用详细示范 这个注解里面的ordinal属性,可以控制转json字符串之后的各个属性的顺序。要是没设置的话,默认就是按照属性的首字母去排序了。 这个理论,在楼上的问题里面可以得到印证。 详情,可以参观一下,我分享的那个链接,亲自测试了。肯定可以解决问题。
Json.toJsonString后和POJO字段顺序不一样,有好的解决办法吗
@wenshao 同样的诉求。。
[fastjson之@JSONField注解的几个的使用详细示范]https://blog.csdn.net/qq_27093465/article/details/83381091)
SerializerFeature.MapSortField ,Feature.OrderedField统一配置 肯本不生效 FastJsonConfig config = new FastJsonConfig(); config.setFeatures( Feature.OrderedField ); config.setSerializerFeatures( SerializerFeature.MapSortField, //保留null的字段 SerializerFeature.WriteMapNullValue, //Date使用ISO8601格式输出 默认为false 不使用默认时间戳 SerializerFeature.UseISO8601DateFormat );