【问题标题】:How to ignore specific JSON field when converting JSON string to Java object?将 JSON 字符串转换为 Java 对象时如何忽略特定的 JSON 字段?
【发布时间】:2016-12-14 21:03:21
【问题描述】:

我有以下 json 数据作为来自数据库的响应,我需要将其映射到我的 Java Pojo。

Json 响应:

{
"Vehicle" { 
 "travelMedium" : "road",
"CarList" : {
    "car": [
       {
        "company": "Maruthi",
         "color" : "red"   
       },
       {
        "company": "Honda",
         "color" : "black"   
       },
       {
        "company": "Swift",
         "color" : "white"   
       }
      ] 
  }
 }
}

Pojos

Class Vehicle {
  String travelMedium;
  List<Car> car;

}


Class Car {
  private company;
  private color;
}

我正在使用 Jackson 进行这种反序列化,它将 json 绑定到 Java 对象,但附加的 字段 CarList 给出错误。我想在绑定时避免“CarList”字段(json字符串到Java Pojo)。

我想知道实现这一目标的方法。或者任何建议都会很棒。

【问题讨论】:

  • Carlist 遇到的错误是什么?您也知道private company; private color 的语法不正确,您缺少数据类型

标签: java json jackson


【解决方案1】:

也许它不是那么干净。但是如果你想避免在你的 pojo 中有这个 carList 字段,你可以这样做:

你可以提供一个setter方法,设置你真正需要的字段。

@JsonProperty("carList")
public void setCarList(Map<String, List<Car>> cars) {
  this.car = cars.get("carList");
}

【讨论】:

  • 可能你必须把它读成Map&lt;String, Object&gt; 然后再转换它。你可以测试一下。
【解决方案2】:

您实际上不想忽略 CarList 字段,而是想自动“解包”它。

你可能需要一个包装类:

public class CarList {
    private final List<Car> car;
    @JsonCreator
    public CarList(@JsonProperty("car") List<Car> car) {
        this.car = car == null ? Collections.emptyList() : Collection.unmodifiableList(car);       
    }
    ... 
}

然后

public class Vehicle {
    private final String travelMedium;
    private final List<Car> car;
    @JsonCreator
    public CarList(@JsonProperty("travelMedium") String travelMedium,
                   @JsonProperty("CarList") CarList carList) {
        this.travelMedium = travelMedium;
        this.car = carList == null ? Collections.emptyList() : Collection.unmodifiableList(carList.getCar());
    }
    ... 
}

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 1970-01-01
    • 2015-05-24
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多