0

まったく一致しない JSON から POJO を作成しようとしていますが、これを解決するのに問題があります。JSON は外部サービスであるため変更できませんが、必要に応じて POJO を変更できる可能性があります。

以下は JSON の例です。

{"Sparse":[{"PixId":1,"PixName":"SWE","Description":"Unknown"},{"PixId":2,"PixName":"PUMNW","Description":"Power Supplement"}],"Status":0,"Message":null}

以下は POJO です。

@JsonIgnoreProperties(ignoreUnknown = true)
public class Pix {
    @JsonProperty("Description")
    private String description;
    @JsonProperty("PixId")
    private int pixId;
    @JsonProperty("PixName")
    private String pixName;


    // getters and setters
}

そして、変換を行うための私のコードは次のとおりです。

ObjectMapper om =  new ObjectMapper();
om.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
List<Pix> pixList = om.readValue(pixJson, new TypeReference<List<Pix>>() {});

pixList には 1 つの要素 (上記の JSON を使用すると 2 である必要があります) のみが含まれ、すべてのプロパティは設定されていません。Jackson 1.9.9 を使用しています。これを機能させる方法についてのアイデアはありますか? ティア。

4

1 に答える 1

0

を含むメイン オブジェクトの新しい POJO クラスを作成する必要がありますList<Pix>。次のようになります。

class Root {

    @JsonProperty("Status")
    private int status;

    @JsonProperty("Message")
    private String message;

    @JsonProperty("Sparse")
    private List<Pix> sparse;

    //getters/setters
}

これで、逆シリアル化コードは次のようになります。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

List<Pix> pixList = mapper.readValue(pixJson, Root.class).getSparse();
于 2013-07-24T07:09:28.170 に答える