Fastjson: 解析后自动重新排序怎么办?

Created on 22 May 2017  ·  12Comments  ·  Source: alibaba/fastjson

解析后自动重新排序了,我只能换回Gson。

question

Most helpful comment

JSON.parseObject("....", Feature.OrderedField); // 这个可以保持顺序

All 12 comments

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
);

Was this page helpful?
0 / 5 - 0 ratings