当前位置:   article > 正文

@JSONField 注解详解和应用_jsonfield parseobject

jsonfield parseobject

         通常我们java类里的字段的命名都是按照驼峰规则来的,但是有些不按套路的或者命名不规范的人,就会出现各种奇葩的情况。最近在项目上就遇到了奇葩的几种情况,一种是类似create_user_id,另一种是PODocNo,还有TotalWeight等。
         由于我们是下游系统,要接收上游传过来的数据,正常情况我们都会按照驼峰规则去建立字段,然后使用JSONObject.parseObject(json,类名.class);方法处理,既简单又方便,但是本 人却遇到了奇葩的人写的代码,没有一点代码规范性,接收到的报文字段上面三种形式的都有,本人又是那种对代码规范有强迫症的人,不喜欢在类中对字段随意命名。
接收报文格式例子

String json = "{\"create_user_id\":\"12\",\"SuplierCode\":\"3-9989965\",\"POLine\":\"11122\"}";

处理类:

  1. private String createUserId;
  2. private String suplierCode;
  3. private String PoLine;
  4. public String getSuplierCode() {
  5. return suplierCode;
  6. }
  7. public void setSuplierCode(String suplierCode) {
  8. this.suplierCode = suplierCode;
  9. }
  10. public String getCreateUserId() {
  11. return createUserId;
  12. }
  13. public void setCreateUserId(String createUserId) {
  14. this.createUserId = createUserId;
  15. }
  16. public String getPoLine() {
  17. return PoLine;
  18. }
  19. public void setPoLine(String poLine) {
  20. PoLine = poLine;
  21. }

按照常规方法处理查看结果有些字段赋值没成功


好在fastjson提供了@JSONField(name="xxxx"),可以作用在字段上,按照自己的方式给字段写对应的名称,
看一下这个注解代码

  1. @Retention(RetentionPolicy.RUNTIME)
  2. @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
  3. public @interface JSONField {
  4. String name() default "";
  5. String format() default "";
  6. boolean serialize() default true;
  7. boolean deserialize() default true;
  8. SerializerFeature[] serialzeFeatures() default {};
  9. Feature[] parseFeatures() default {};
  10. }

json在解析过程中会判断有无使用该注解进行解析重命名

所以需要在我们字段上加上@JSONField注解,

  1. @JSONField(name="create_user_id")
  2. private String createUserId;
  3. @JSONField(name="SuplierCode")
  4. private String suplierCode;
  5. @JSONField(name="POLine")
  6. private String PoLine;
  7. public String getSuplierCode() {
  8. return suplierCode;
  9. }
  10. public void setSuplierCode(String suplierCode) {
  11. this.suplierCode = suplierCode;
  12. }
  13. public String getCreateUserId() {
  14. return createUserId;
  15. }
  16. public void setCreateUserId(String createUserId) {
  17. this.createUserId = createUserId;
  18. }
  19. public String getPoLine() {
  20. return PoLine;
  21. }
  22. public void setPoLine(String poLine) {
  23. PoLine = poLine;
  24. }

在查看结果,都赋到值了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/982489
推荐阅读
相关标签
  

闽ICP备14008679号