オブジェクトに文字列をマッピングすることができません。

何:

文字列の形式で、次のように私は、JSONの値を持っています。

{
    "Sample": {
        "name": "some name",
        "key": "some key"
    },
    "Offering": {
        "offer": "some offer",
        "amount": 100
    }
}

今、私はこの次のように、それが動作し、罰金をマップをマップしようとした場合。

//mapper is ObjectMapper;
//data is the above json in String format
Map vo = mapper.readValue(data, Map.class);

しかし、私は次のようにカスタムデータクラスにマップします。

Data vo = mapper.readValue(data, Data.class);

私はこれを行うと、VOの結果はNULLです。

データクラスが構成されている方法については、以下を参照してください。

@Getter
@Setter
public class Data {
    private Sample sample;
    private Offering offering;
}

@Getter
@Setter
public class Offering {
    public String offer;
    public int amount;
}

@Getter
@Setter
public class Sample {
    private String name;
    private String key;
}

私が間違ってやっている何をしてくださいアドバイス。ありがとうございました。

michalk:

2つのオプションがあります。

  1. あなたを変えることができればjson-あなたは変更する必要がありますSamplesampleしてOfferingまでoffering

  2. あなたの変更Dataクラスを:

@Getter
@Setter
public class Data {
    @JsonProperty("Sample")
    private Sample sample;

    @JsonProperty("Offering")
    private Offering offering;
}

二番目のオプションでは、伝える必要がありますJacksonどのようなあなたの入力のプロパティjsonは、デフォルトで、それはプロパティ名を小文字にマップしようとしますので、あなたのクラスのどのプロパティにマップします。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=177270&siteId=1
おすすめ