何:
文字列の形式で、次のように私は、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つのオプションがあります。
あなたを変えることができれば
json
-あなたは変更する必要がありますSample
にsample
してOffering
までoffering
あなたの変更
Data
クラスを:
@Getter
@Setter
public class Data {
@JsonProperty("Sample")
private Sample sample;
@JsonProperty("Offering")
private Offering offering;
}
二番目のオプションでは、伝える必要がありますJackson
どのようなあなたの入力のプロパティjson
は、デフォルトで、それはプロパティ名を小文字にマップしようとしますので、あなたのクラスのどのプロパティにマップします。