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