簡體   English   中英

將JSON字符串轉換為Java對象時,如何忽略特定的JSON字段?

[英]How to ignore specific JSON field when converting JSON string to Java object?

我有以下json數據作為來自數據庫的響應,我需要將其映射到Java Pojo。

傑森回應:

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

的POJO

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

}


Class Car {
  private company;
  private color;
}

我正在使用Jackson進行反序列化,它將json綁定到Java對象,但是附加字段CarList給出了錯誤。 我想避免綁定“ CarList”字段(將JSON字符串綁定到Java Pojo)。

我想知道一種實現此目標的方法。 否則任何建議都會很棒。

也許不是那么干凈。 但是,如果您想避免在pojo中包含這個carList字段,則可以執行以下操作:

您可以提供setter方法並設置您實際需要的字段。

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

實際上,您不想忽略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());
    }
    ... 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM