SpringBoot|Jsonエンティティークラスのプロパティの大文字と小文字の問題を返します

1429 ワード


質問:
フロントエンドで使用するパラメータが標準的なアルパカ式ではなく大文字の場合、バックグラウンドでパラメータのインタラクションを行うとパラメータが受信できないという問題が発生します.
例えば、フロントエンドはTitleを使用し、バックエンドエンティティクラスは中国式titleのように統一されていない.
 
解決:JackjsonとFastjsonの2つの方法
  • Jackjson方式:
  • @JsonProperty注記で解決するのが便利です.この属性の名前をシリアル化(または逆シーケンス化受信パラメータ)して、trueName属性をnameにシリアル化するなど、別の名前にするのが便利です.@JsonProperty(value="name") 
    注記をプロパティに配置すると、次のように大文字と小文字が返されます.
    @JsonProperty("Ao")
    private Integer Ao;

    responseBody応答結果:{Ao:xxx,ao:xxx} 
    注記はgetterに置いて完璧に解決し、大文字だけが自動的に小文字にならない問題を返します.
    @JsonProperty("Ao")
    public Integer getAo() {
       return Ao;
    }

    responseBody応答結果:{Ao:xxx}
     
  • Fastjson方式(Fastjsonカスタム属性のシーケンス化と逆シーケンス化):
  • 参照先:
    https://github.com/alibaba/fastjson/wiki/JSONField
    注釈によるシーケンス化と逆シーケンス化の指定
    //   get,set   
    public class A {
          private int id;
     
          @JSONField(name="ID")
          public int getId() {return id;}
          @JSONField(name="ID")
          public void setId(int value) {this.id = id;}
     }
    
    
    //   field 
    public class A {
          @JSONField(name="ID")
          private int id;
     
          public int getId() {return id;}
          public void setId(int value) {this.id = id;}
     }
    
    //   format       
     public class A {
          //   date         yyyyMMdd    
          @JSONField(format="yyyyMMdd")
          public Date date;
     }