@JsonProperty仅用于从JSON反序列化,而不是用于对JSON的强化

时间:2016-12-02 10:10:35

标签: json

我有以下POJO。它包含有关我机场的数据。

class MyClass
{
  @JsonProperty("AirportCode")
  String airportCode;

  @JsonProperty("AirportID")
  Integer airportId;
}

使用从API接收的JSON创建POJO对象。 API示例输出如下所示。

[
 {
   "AirportCode": "BBA",
   "AirportID": 4276802,
 },
 {
   "AirportCode": "SCQ",
   "AirportID": 5325651,
 }
]

我的代码的功能如下

void func()
{
   //Get JSON from API and convert to POJO
   //Do some processing on the POJO
   //Convert POJO into JSON and write to file
}

文件内容如下

[
 {
   "AirportCode": "BBA-IN",
   "AirportID": 4276802,
 },
 {
   "AirportCode": "SCQ-USA",
   "AirportID": 5325651,
 }
]

但是我要求输出为驼峰(如POJO)

[
 {
   "airportCode": "BBA-IN",
   "airportId": 4276802,
 },
 {
   "airportCode": "SCQ-USA",
   "airportId": 5325651,
 }
]

无论如何,只有在反序列化到POJO期间才能获得@JsonProperty,而不是在序列化为JSON期间获得荣誉?

2 个答案:

答案 0 :(得分:1)

您是否尝试使用不同的jsonProperty值注释getter和setter?直接它不会起作用,但是如果你改变了getter / setter名称,它应该被处理,就像它们属于不同的字段一样。

这样的事情:

class MyClass {

    String airportCode;

    Integer airportId;

    @JsonProperty("airportCode")
    public String getAirportCodeForJson() {
        return airportCode;
    }

    @JsonProperty("AirportCode")
    public void setAirportCode(String airportCode) {
        this.airportCode = airportCode;
    }

    @JsonProperty("airportID")
    public Integer getAirportIdForJson() {
        return airportId;
    }

    @JsonProperty("AirportID")
    public void setAirportId(Integer airportId) {
        this.airportId = airportId;
    }

}

答案 1 :(得分:0)

你可以反序列化为一个字典,然后是所有键的驼峰。之后,您就可以按预期使用它了。