解析后自动重新排序了,我只能换回Gson。
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
);
Most helpful comment
JSON.parseObject("....", Feature.OrderedField); // 这个可以保持顺序