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

之前在项目中使用到了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里的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值