使用fastjson编辑全大写字段时遇到的问题

来源:互联网 发布:新三板上市 知乎 编辑:程序博客网 时间:2024/05/16 12:23

之前在项目中使用到了fastjson,其中有个bean中有个OS字段为全大写,但是在生成json之后发现自动变成了小写,导致前端没有解析这块。之后在网上搜索了相关的内容,据网友说可以通过在get方法添加@JSONField注解的方法来实现字段的大写,如下所示:

@JSONField(name = "OS")      public List<String> getOS() {         return OS;     }
但是,没有什么卵用,然后我检查了项目的pom.xml文件,发现确实使用的fastjson。之后我又在搜索中发现有一位网友提到了使用@JsonProperty注解就可以实现字段大写,如下所示:

@JsonProperty(value = "OS")private List<String> OS;
确实可以,但是。。。生成的json串中同时生成了OS和os字段。如下,

      "os": [
        "Android4.4.2",
        "Android7.0",
        "Android4.4.4",
        "Android6.0"
      ],
      "OS": [
        "Android4.4.2",
        "Android7.0",
        "Android4.4.4",
        "Android6.0"
      ]

反正姑且是可以用了,之后我在http://www.mincoder.com/article/2592.shtml中发现针对这种情况可以使用在类声明上添加@JsonAutoDetect(JsonMethod.FIELD)注解或者在get方法上添加@JsonIgnore注解来去除小写的字段。之后我尝试了一下,发现虽然存在@JsonAutoDetect注解,但是JsonMethod.FIELD没有找到,不知道是不是因为我这没有加载jackson json的原因。单独使用@JsonAutoDetect注解的话没有效果,但是在get方法上添加@JsonIgnore注解确实生效了,就是下面这样子。


@JsonProperty(value = "OS")private List<String> OS;@JsonIgnorepublic List<String> getOS() {return OS;}public void setOS(List<String> oS) {OS = oS;}
不过如果字段过多的话确实不太方便。以上就是目前解决问题的过程,记录下来希望大家能少走一点弯路,不过实际上为什么这个会生效还是不太明白,因为JsonProperty是jackson json里的。


阅读全文
1 0
原创粉丝点击