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

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

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

	@JsonProperty(value = "OS")
	private List 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 OS;

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


你可能感兴趣的:(使用fastjson编辑全大写字段时遇到的问题)