属性のシリアル化のカスタマイズとアルファベットの並べ替え-JSONフレームワークJacksonElaboration Part 3

JacksonはSpringBootのデフォルトのJSONデータ処理フレームワークですが、Springライブラリに依存していません。JacksonはSpringフレームワークでのみ使用できると考える友人もいますが、そうではありません。そのような制限はありません。多くのJSONデータ処理メソッドとアノテーションに加えて、ストリーミングAPI、ツリーモデル、データバインディング、複雑なデータ型変換などの機能を提供します。シンプルで使いやすいですが、決して小さなおもちゃではありません。内容については、5〜10の記事を連載しますので、引き続きご注目ください。

通常のJSONデータのシリアル化プロセスでは、属性を特定の順序でシリアル化する必要があることがよくあります。この記事では、JSONシリアル化属性を並べ替える方法、順序をカスタマイズする方法、またはアルファベット順に並べ替える方法を紹介します。

1つは、@JsonPropertyOrder属性の並べ替え

JsonPropertyOrderアノテーションを使用して、JavaPOJOの各メンバー変数のプロパティのシリアル化順序を指定します。

@Data
@JsonPropertyOrder({"salary","name","age","hobbies","friends"})
public class PlayerStar {

  private String name;
  private Integer age;
  private String[] hobbies;    //业余爱好,数组
  private List<String> friends;   //  朋友
  private Map<String, BigDecimal> salary; //年收入 Map
}

最終的なJavaPOJOオブジェクトは次の文字列にシリアル化され、プロパティはJsonPropertyOrderアノテーションで定義された順序( "salary"、 "name"、 "age"、 "hobbies"、 "friends")でシリアル化されます。JsonPropertyOrderを使用して順序を指定しない場合、デフォルトでは、Javaクラスメンバー変数の宣言順序に従ってシリアル化されます。

{
  "salary" : {
    "2000" : 10000000,
    "2010" : 62000000,
    "2020" : 112400000
  },
  "name" : "乔丹",
  "age" : 45,
  "hobbies" : [ "高尔夫球", "棒球" ],
  "friends" : [ "kobe", "curry", "james" ]
}

次のコードを使用して、PlayerStarオブジェクトを文字列にシリアル化できます

  //getInstance是一个为PlayerStar各属性赋值的初始化方法,可以参考本系列文章第一节:基础数据准备
  PlayerStar jordan = PlayerStar.getInstance();

  //ObjectMapper作为Jackson的API工具类存在
  ObjectMapper mapper = new ObjectMapper();
  String jsonInString2 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jordan);
  System.out.println(jsonInString2);

第二に、アルファベット順

@JsonPropertyOrder(alphabetic = true)Javaクラスメンバー変数のシリアル化順序定義するために使用します

@JsonPropertyOrder(alphabetic = true)
public class PlayerStar {
     //成员变量定义和上文一致
}

英語のアルファベットでは、年齢(aで始まる)>友達(fで始まる)->趣味(hで始まる)などであるため、最終的なJSONシリアル化の結果は次のようになります。

{
  "age" : 45,
  "friends" : [ "kobe", "curry", "james" ],
  "hobbies" : [ "高尔夫球", "棒球" ],
  "name" : "乔丹",
  "salary" : {
    "2000" : 10000000,
    "2010" : 62000000,
    "2020" : 112400000
  }
}

私のブログをフォローすることを歓迎します、多くのブティックコレクションがあります

  • この記事は、出典を示して複製されています(接続を添付する必要があり、テキストのみを複製することはできません):レターブラザーのブログ

あなたがそれがあなたに役立つと思うなら、私のためにそれを好きにして共有してください!あなたのサポートは私の尽きることのない創造的な動機です!また、最近、以下のような高品質なコンテンツを出力しておりますので、よろしくお願いいたします。

おすすめ

転載: blog.csdn.net/hanxiaotongtong/article/details/108702143