Java Jackson-Json-to-POJO映射

Java Jackson-Json-to-POJO映射,java,json,jackson,json-serialization,Java,Json,Jackson,Json Serialization,我对与jackson一起创建地图有点迷茫。我的Json具有以下结构 { "d": { "__metadata": { "uri": "https://apisalesdemo8.successfactors.com:443/odata/v2/JobApplication(1463L)", "type": "SFOData.JobApplication" }, "lastName": "K", "address": "123 Ma

我对与jackson一起创建地图有点迷茫。我的Json具有以下结构

    {
  "d": {
    "__metadata": {
      "uri": "https://apisalesdemo8.successfactors.com:443/odata/v2/JobApplication(1463L)",
      "type": "SFOData.JobApplication"
    },
    "lastName": "K",
    "address": "123 Main Street",
    "cellPhone": "12345",
    "firstName": "Katrin",
    "city": "Anytown",
    "country": "United States",
    "custappattachment": {
      "results": [
        {
          "__metadata": {
            "uri": "https://apisalesdemo8.successfactors.com:443/odata/v2/Attachment(1188L)",
            "type": "SFOData.Attachment"
          },
          "fileExtension": "jpeg",
          "fileName": "hp-hero-img.jpeg",
          "fileContent": "/9j/4AA"
        },
        {
          "__metadata": {
            "uri": "https://apisalesdemo8.successfactors.com:443/odata/v2/Attachment(1189L)",
            "type": "SFOData.Attachment"
          },
          "fileExtension": "jpeg",
          "fileName": "hp-content-bkgd-img.jpeg",
          "fileContent": "/9j/4AAQSk"
        }]}}}
我确实找到了很多处理数组的教程,但我已经用第一个标记“d”失败了。 而且根本不需要所有的“_元数据”标记

我创建了一个包含lastName等属性和一个集合附件的pojo。 但我的代码总是在标记“d”或“\uu元数据”处失败

如有任何提示,将不胜感激

问候
Mathias

您需要忽略POJO中不存在的属性。在
对象映射器的
反序列化功能中设置以下属性:

// for version 1.x       
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// for newer versions
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) 
反序列化代码:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
ResponseDataObject dataObject = mapper.readValue(file, ResponseDataObject.class);
并将此注释添加到ResponseDataObject类:

@JsonRootName(value = "d")
class ResponseDataObject {

您可以使用
@JsonIgnoreProperties
注释忽略与类中定义的任何成员都不匹配的属性,例如:

@JsonIgnoreProperties(ignoreUnknown = true)
public class ResponseDataObject {

这将确保映射所有匹配的属性,并忽略其他属性。

我尝试过这样做,但它会导致所有属性的值都为空,因此我猜它们没有正确映射?您正在使用稍微不同的代码来解析jsonvalue,我已更新了代码。试一试。不,末尾的所有内容都是空的。它修复了根值始终是“d”的问题。如果它始终是“d”,则可以在使用@SachinGupta的代码之前从字符串中切掉这一部分
@JsonRootName(value = "d")
class ResponseDataObject {
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResponseDataObject {