[英]Jackson YAML parsing with parent objects & array of objects
我有一個包含四個父對象的 yaml 文件。 第四個對象是一個元素數組,我將要為其創建一個類並填充該元素。 有沒有辦法在 jackson 中使用對象映射器來忽略前三個對象,然后解析我的“InspectionModules”列表?
我的 yaml 文件如下所示:
# Don't care about these elements
InspectionGroups:
InspecitonModes:
ThresholdTypes:
# This array is of interest
InspectionModules:
- feature : FC_Trig1
name: "first inspection"
Channels:
- id: ICI_01
category: Dia_MC_Config
- feature : FC_Trig2
name: "Diagonal Missing Cap"
Channels:
- id: ICI_02
category: Dia_MC_Config
基本上我想創建一個名為InspectionModule 的類,並讓映射器將InspectionModules 數組的元素映射到這個類中。 傑克遜有沒有一種簡單的方法可以做到這一點? 如果不是,是否建議重新組織我們的 YAML 文件,以便我們可以利用對象映射器?
我假設您已經對 Jackson 的ObjectMapper
有所了解。
首先,您需要一個代表 YAML 文件全部內容的 Java 類。 我們稱之為Root
:
public class Root {
@JsonProperty("InspectionModules")
private List<InspectionModule> inspectionModules;
// getters and setters omitted here for brevity
}
請注意,您需要使用@JsonProperty
來告訴 Jackson YAML 名稱InspectionModules
對應於您的 Java 屬性inspectionModules
,盡管它們的拼寫不同。
接下來,您需要一個 Java 類來表示InspectionModules:
下的 YAML 部分之一InspectionModules:
。
public class InspectionModule {
private String feature;
private String name;
@JsonProperty("Channels")
private List<Channel> channels;
// getters and setters omitted here for brevity
}
最后,您需要一個Channel
類來表示Channels:
下的 YAML 部分之一Channels:
您應該已經能夠自己編寫這個 Java 類了。
現在您已准備好使用 Jackson 的YAMLMapper
將您的 YAML 文件讀入Root
對象。
File file = new File("example.yaml");
ObjectMapper objectMapper = new YAMLMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Root root = objectMapper.readValue(file, Root.class);
請注意,您需要告訴 Jackson 在閱讀過程中遇到未知屬性(如InspectionGroups
)是可以的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.