json转java pojo反序列化

问题描述 投票:0回答:1

我有一个 json,我必须将其转换为 java POJO。这是 json:

{
    "foreclosurePreferences": [                                                   
       {    
        "featureCode": "COV_BAS_ULIP",
        "featureNumber": null,
        "parentCoverageCode": null,
        "preferences": {
            "Minimum_Duration": 5
        }
      }

    ]
}

我使用了以下3个类,但它们未能正确反序列化,内部对象为

null

@Data
@NoArgsConstructor
public class Preferences implements Serializable {
    @JsonProperty("Minimum_Duration")
    private int minimumDuration;
}


@Data
@NoArgsConstructor
public class ForeclosurePreference implements Serializable {
    private String featureCode;
    private String featureNumber;
    private String parentCoverageCode;
    private Preferences preferences;

}


public class ForeclosurePreferencesWrapper implements Serializable {
    private List<ForeclosurePreference> foreclosurePreferences;

    public List<ForeclosurePreference> getForeclosurePreferences() {
        return this.foreclosurePreferences;
    }

    public void setForeclosurePreferences(List<ForeclosurePreference> foreclosurePreferences) {
        this.foreclosurePreferences = foreclosurePreferences;
    }
}

我该怎么做?

java json jackson
1个回答
0
投票

试试这个:

更新 ForeclosurePreferencesWrapper 以使用

@ToString
lombok 来验证输出:

@ToString
public class ForeclosurePreferencesWrapper implements Serializable {
    private List<ForeclosurePreference> foreclosurePreferences;

    public List<ForeclosurePreference> getForeclosurePreferences() {
        return this.foreclosurePreferences;
    }

    public void setForeclosurePreferences(List<ForeclosurePreference> foreclosurePreferences) {
        this.foreclosurePreferences = foreclosurePreferences;
    }
}

添加了测试类以查看输出:

public class Test {

    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.writerWithDefaultPrettyPrinter();

        ForeclosurePreferencesWrapper wrapper = objectMapper.readValue("{\n" +
                "    \"foreclosurePreferences\": [                                                   \n" +
                "       {    \n" +
                "        \"featureCode\": \"COV_BAS_ULIP\",\n" +
                "        \"featureNumber\": null,\n" +
                "        \"parentCoverageCode\": null,\n" +
                "        \"preferences\": {\n" +
                "            \"Minimum_Duration\": 5\n" +
                "        }\n" +
                "      }\n" +
                "\n" +
                "    ]\n" +
                "}", ForeclosurePreferencesWrapper.class);
        System.out.println(wrapper);
    }

}

注意: 您必须将 JSON 反序列化为

ForeclosurePreferencesWrapper
对象。

输出:

ForeclosurePreferencesWrapper(foreclosurePreferences=[ForeclosurePreference(featureCode=COV_BAS_ULIP, featureNumber=null, parentCoverageCode=null, preferences=Preferences(minimumDuration=5))])
© www.soinside.com 2019 - 2024. All rights reserved.