2016-12-02 127 views
0

我有以下POJO。它包含有关我的机场的数据。@JsonProperty仅用于从JSON反序列化,而不是用于JSON的消解

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

    @JsonProperty("AirportID") 
    Integer airportId; 
} 

POJO对象是使用从API接收到的JSON创建的。 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, 
} 
] 

是无论如何,我可以得到@JsonProperty仅在对POJO进行反序列化的过程中才能得到尊重,而不是在序列化到JSON的过程中呢?

回答

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; 
    } 

} 
+0

谢谢,这工作 –

0

你可以反序列化成一个字典,然后骆驼案例所有的键。之后,您可以按预期使用它。