我有一些JSON的格式如下,我試圖與傑克遜解析 -在JSON解析無名映射使用傑克遜
"response":{
"response_inner":{
"a":{"field1":2,"field2":0,"field3":5,"field4":0,"field5":[{"field5_1":"b","field5_2":1},{"field5_1":"c","field5_2":1}]},
"d":{"field1":2,"field2":6,"field3":11,"field4":0,"field5":[{"field5_1":"c","field5_2":1},{"field5_1":"b","field5_2":1}]},
"response_inner_bool":false
}
}
這裏的「A」,「B」等都是一些字符串,可以改變每個迴應。
我創建了一個Java對象來表示'response_inner'(我們稱之爲ResponseInner),另一個表示包含該字段的對象(讓我們稱之爲FieldInfo),但我不知道如何解析這使用@JsonCreator和@JsonProperty註釋 - ResponseInner對象可以包含任意數量的String - > FieldInfo映射。
我試圖解析它像這樣 -
public class Response {
private ResponseInner responseInner;
@JsonCreator
public Response(@JsonProperty("response_inner") ResponseInner responseInner) {
this.reponseInner = responseInner;
}
}
public class ResponseInner {
private Map<String, FieldInfo> stringToFieldInfoMap;
private boolean responseInnerBool;
@JsonCreator
public ResponseInner(Map<String, FieldInfo> stringToFieldInfoMap, @JsonProperty("response_inner_bool") boolean responseInnerBool) {
this.stringToFieldInfoMap = stringToFieldInfoMap;
this.responseInnerBool = responseInnerBool;
}
}
但抱怨這樣的說法#構造函數的0無屬性名稱標註;當多參數構造函數註釋爲Creator時必須有名稱。有關如何解決此問題的任何建議?
感謝您的迴應,但不知道我明白這是如何解析JSON樣本,我包括使用傑克遜?此外,我確實需要ResponseInner中的stringToFieldInfoMap,這只是我的代碼的摘錄。 – user654703
@ user654703問題似乎是,您目前有一個參數傳遞給@JsonCreator帶註釋的構造函數,該構造函數僅適用於單個參數方法簽名。我建議在實例化之後將'stringToFieldInfoMap'傳遞給'InnerResponse'類,或者重構類結構。 –
我試着改變代碼來手動分析stringToFieldInfoMap,以便我可以檢測到的情況下,當字符串'correctSpelled'和fieldInfo實際上是一個布爾值,但然後我不知道如何解析FieldInfo從JSON對象('field5'不被識別)。但是這聽起來像你的建議略有不同 - 你可以包含一個代碼示例來說明嗎? – user654703