私のようにJSONレスポンスを返すREST APIを持っている:Jacksonの同じ名前で異なるタイプの属性を逆シリアル化しますか?
{
"channel" : "JHBHS"
}
、時にはそれが返されます。
{
"channel": {
"id": 12321,
"name": "Some channel"
}
}
私のようなPOJOていますので、そこ
public class Event {
private String channel;
@JsonProperty("channel")
private Channel channelObj;
}
public class Channel {
private int id;
private String name;
}
ですが(あなた自身のカスタムデシリアライザを書く以外に)Jackson2で私は地図に役立ちますchannel
をJSONの場合String
の場合はString
、Channel
の場合はJSONオブジェクトですか?
つまり、変数のtype
でマッピングする方法がありますか?name
?
class Event {
@JsonProperty("channel")
private JsonNode channelInternal;
private Channel channel;
private String channelStr;
/**
* Custom getter with channel parsing
* @return channel
*/
public Channel getChannel() {
if (channel == null && channelInternal != null) {
if (channelInternal.isObject()) {
int id = channelInternal.get("id").intValue();
String name = channelInternal.get("name").asText();
channel = new Channel(id, name);
}
}
return channel;
}
/**
* Custom getter with channel string parsing
* @return channel string
*/
public String getChannelStr() {
if (channelStr == null && channelInternal != null) {
if (channelInternal.isTextual()) {
channelStr = channelInternal.asText();
}
}
return channelStr;
}
}
をか、このような:
私は別の同様の質問http://stackoverflow.com/questions/21790727/providing-jackson-mapper-multiple-を見つけました同じオブジェクトを反並列化する方法 –