[英]Convert Json string to Java object gives null (null)
您好,我得到了這個Json字串
{"NexusResource":{"resourceURI":"http://nexus.ad.hrm.se/nexus/service/local/repositories/snapshots/content/se/hrmsoftware/hrm/hrm-release/16.1-SNAPSHOT/","relativePath":"/se/hrmsoftware/hrm/hrm-release/16.1-SNAPSHOT/","text":"16.1-SNAPSHOT","leaf":false,"lastModified":"2018-04-09 12:23:59.0 UTC","sizeOnDisk":-1}}
我想將其轉換為名為NexusResource的類的對象,如下所示
public class NexusResource {
@JsonProperty("resourceURI") private String resourceURI;
@JsonProperty("relativePath") private String relativePath;
@JsonProperty("text") private String text;
@JsonProperty("leaf") private Boolean leaf;
@JsonProperty("lastModified") private String lastModified;
@JsonProperty("sizeOnDisk") private Integer sizeOnDisk;
@JsonIgnore private Map<String, Object> additionalProperties = new HashMap<>();
}
我嘗試使用ObjectMapper進行轉換
ObjectMapper mapper = new ObjectMapper();
NexusResource resource = mapper.readValue(version, NexusResource.class);
版本是Json字符串,但是當我記錄資源時,即使版本獲取了所有數據,我得到的還是null(空)。
NexusResource
不是JSON的根,而是密鑰。 為了使Java映射正常工作,您應該定義包裝類型:
public class NexusResources {
@JsonProperty("NexusResource") private NexusResource root;
...
}
然后用它來映射:
ObjectMapper mapper = new ObjectMapper();
NexusResources root = mapper.readValue(version, NexusResources.class);
NexusResource resource = root.getRoot();
問題是JSON與您嘗試解析的類不匹配。 請注意,JSON有一個名為“ NexusResource”的字段,其中包含所有其他字段。 而NexusResource.class
類僅具有字段。 您可以做兩件事。 更改JSON以匹配NexusResource.class,或創建一個與JSON匹配的新類。
1)將json更改為以下內容。
{"resourceURI":"http://nexus.ad.hrm.se/nexus/service/local/repositories/snapshots/content/se/hrmsoftware/hrm/hrm-release/16.1-SNAPSHOT/","relativePath":"/se/hrmsoftware/hrm/hrm-release/16.1-SNAPSHOT/","text":"16.1-SNAPSHOT","leaf":false,"lastModified":"2018-04-09 12:23:59.0 UTC","sizeOnDisk":-1}
2)創建與您的Json實際匹配的新類。
class NexusResourceJson {
@JsonProperty("NexusResource ")
NexusResource resource;
public NexusResource getResource() {return resource;}
}
ObjectMapper mapper = new ObjectMapper();
NexusResource resource = mapper.readValue(version, NexusResourceJson.class).getResource();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.