java jackson 自定义_java – Jackson:在自定义字段JsonDeserializer中获取整个对象

我有这门课:

@JsonIgnoreProperties(ignoreUnknown = true)

public class VehicleRestModel implements RestModel {

@JsonProperty("idVehicle")

public String id;

public String name;

}

我从REST API获取此JSON:

[

{ "idVehicle" : "1234DHR", "tm" : "Hyundai", "model" : "Oskarsuko"},

//more vehicles

]

我希望我的模型的字段名称是JSON的字段tm和模型连接.我虽然使用了JsonDeserializer但是,我怎样才能获得整个JSON对象?

class MyDeserializer implements JsonDeserializer {

@Override

public String deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {

// I need the entire JSON here, in order to concatenate two fields

}

}

谢谢!

最佳答案 如果我理解你的问题,你可以让2个setter在同一个私有字段上工作,然后你可以用@JsonProperty而不是字段来标记setter.

这可以帮到你: @JsonProperty annotation on field as well as getter/setter

您也可以使用@JsonGetter(“var”)和@JsonSetter(“var”)而不是@JsonProperty.

编辑:好的,一个解决方案.这是我提交的最丑陋的代码,但如果你想要一个快速的东西,你不能真正修改POJO原始界面(字段,getter)

public class VehicleRestModel {

private String concatValue = "";

private int splitIndex;

@JsonSetter("var1")

public setVar1(String var1){ concatValue = var1 + concatValue.substring(splitIndex,concatValue.length()); ; splitIndex = var1.length(); }

@JsonSetter("var2")

public setVar2(String var2){ concatValue = concatValue.substring(0,splitIndex) + var2; }

}

如果您在意,请注意空值,因为它们会在此演示代码中作为文字附加.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值