首页 > 其他分享 >jackson序列化key排序

jackson序列化key排序

时间:2023-11-02 18:33:07浏览次数:25  
标签:序列化 jackson String private 排序 key ElementType public

对象在序列化的时候对key进行排序

使用 

JsonPropertyOrder
``` java
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE,
ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonPropertyOrder
{
/**
* Order in which properties of annotated object are to be serialized in.
* 指定key的排序
*/
public String[] value() default { };

/**
* Property that defines what to do regarding ordering of properties
* not explicitly included in annotation instance. If set to true,
* they will be alphabetically ordered; if false, order is
* undefined (default setting)
   * 为true的时候,则按字母排序。
*/
public boolean alphabetic() default false;
}
```
测试
``` java
public class TestJackson {

public static void main(String[] args) throws IOException {
TestA a = new TestA();
a.setA("");
a.setB("");
a.setC("");
a.setD("");
a.setE("");
a.setF("");
a.setG("");
a.setH("");
a.setI("");
a.setJ("");
a.setK("");
a.setL("");
a.setZ("");
System.out.println(JsonUtil.encode(a));
}
@Data
@JsonPropertyOrder(alphabetic = true)
public static class TestA{
private String z= "";
private String b = "2";
private String d= "";
private String t= "";
private String c= "";
private String g= "";
private String k= "";
private String f= "";
private String e= "";
private String a = "1";
private String h= "";
private String i= "";
private String j= "";
private String l= "";
private String a1= "";
private String a2= "";
private String a3= "";
}
}
```
结果:
``` json
{"a":"","a1":"","a2":"","a3":"","b":"","c":"","d":"","e":"","f":"","g":"","h":"","i":"","j":"","k":"","l":"","t":"","z":""}
```

标签:序列化,jackson,String,private,排序,key,ElementType,public
From: https://www.cnblogs.com/wnqc/p/17806023.html

相关文章

  • Keras TypeError: ('Keyword argument not understood:', 'input')
    TypeError:('Keywordargumentnotunderstood:','input') model=Model(input=[inputs],output=output)报错信息TypeError:('Keywordargumentnotunderstood:','input')解决方法换成model=Model(inputs=...,outputs=...) ......
  • TypeError: fit() got an unexpected keyword argument 'nb_epoch'
    model.fit(trainX,trainY,nb_epoch=200,batch_size=2,verbose=2) It'sjust epochs now. nb_epoch wasdeprecatedyearsago. 把nb_epoch......
  • NativeBuffering,一种高性能、零内存分配的序列化解决方案[性能测试篇]
    第一版的NativeBuffering([上篇]、[下篇])发布之后,我又对它作了多轮迭代,对性能作了较大的优化。比如确保所有类型的数据都是内存对齐的,内部采用了池化机器确保真正的“零内存分配”等。对于字典类型的数据成员,原来只是“表现得像个字段”,这次真正使用一段连续的内存构架了一个“哈希......
  • keystone服务的详解
    一:keystone服务作用:1:提供其余组件的所有认证服务,令牌的管理2:用户管理:验证用户的身份合法流程就是openstack上的用户,进行一个初始化,将信息存储在数据库里面去,然后第一次登录的时候,会去数据库里面去找数据进行校验,然后返回用户一个令牌,以后用户有这个令牌的话,使用某些服务的时候......
  • doris FE启动异常:org.yaml.snakeyaml.representer.Representer: method <init>()V not
    dorisFF启动异常,异常信息如下:  2023-11-0109:53:22,691INFO(main|1)[PaloFe.start():124]PaloFEstarting...2023-11-0109:53:22,699INFO(main|1)[FrontendOptions.analyzePriorityCidrs():107]configuredprior_cidrsvalue:10.252.226.5/242023-11-0109:5......
  • AliOS-monkey测试汇总
    一、什么是monkey测试   Monkey测试是一种软件测试类型,测试人员在没有预定义测试用例的情况下,应用随机测试用例测试程序,并检查系统行为。Monkey测试的目的是使用探索性技术来发现错误1。Monkey测试是一种黑盒测试。当测试人员为了编写和执行函数而出现时间不足时,就可......
  • Redis Bigkey排查
    在处理bigkey问题可以先从一下几点入手什么是bigkey?bigkey危害?bigkey是如何产生的?如何发现bigkey?如何处理bigkey?什么是BigkeyRedisbigkey是指在Redis数据库中占用空间较大的键值对。这些键通常包含了大量的数据,可能会影响Redis的性能和内存使用。例如,在一个集合......
  • [macos]keyboard mastero设置
    拖动的时候通过点击command来进行复制 ......
  • [win]使用 AutoHotKey 配合Win10分屏功能
    Win+tab键建立新的虚拟桌面使用笔记本电脑的触摸板,用四个手指滑的话就可以在虚拟桌面间切换 那么就映射一下,要是能一键切换的话就相当于是个"老板键"了  1.安装AutoHotKey2.安装完后查看.chm文档3.配置脚本,这里的意思是用鼠标侧键完成切换虚拟桌面的功能,如果老板来了就可以一......
  • 序列化组件对数据的增删改查
    序列化组件对数据的增删改查1写一个序列化的类,继承Serializer2在类中写要反序列化的字段,想反序列化哪个字段,就在类中写哪个字段,字段的属性(max_lenth......) max_length 最大长度min_lenght 最小长度allow_blank 是否允许为空trim_whitespace 是否截断空白字符......