0
我有這樣的JSON片段:反序列化到地圖<java.lang.String中,java.net.URI中的>傑克遜
{
"uploadData": {
"25967391": {
"jobid": "jobId",
"numberOfFiles": "1",
"outputFiles": {
"1": "file.pdf"
},
"originalFiles": {
"1": "./target/test-classes/com/tools/myProject/input/File.pdf",
"2": "./target/test-classes/com/tools/myProject/input/File.csv"
}
}
}
}
我想要做的是反序列化「originalFiles」變成了地圖。因爲在「originalFiles」,「1」和「2」都是非絕對URI我已經有一個自定義類URIStringDeserializer
這確實
Paths.get(".").toUri().resolve(uriString).normalize().toASCIIString()
這給了我
file:/C:/Users/userName/IdeaProjects/myProject/target/test-classes/com/tools/myProject/input/File.pdf
爲originalFiles
的第一個URI 。 這裏是uploadData
方面的階級:
@JsonIgnoreProperties(ignoreUnknown = true)
public class UploadData{
@JsonProperty("originalFiles")
private Map<Integer, URI> originalFiles;
//getters and setters omitted
}
註解uploadData
場@JsonDeserialize(using = CustomDeserializer.class)
導致com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.net.URI out of START_OBJECT token
。我怎樣才能讓我的自定義解串器使用tose map?
可能是您的地圖json不正確。你可以試試這個嗎? 「originalFiles」:{ 「1」:{ 「./target/test-classes/com/tools/myProject/input/File.pdf」 }, 「2」:{ 」 ./target/ test-classes/com/tools/myProject/input/File.csv「 } } – Veeram
此JSON片段只是較大JSON的一部分,我將其複製用於提問。根據JSONLint,整個部分是有效的。感謝您指點。我更新了片段。 –