次の形式のjsonがあります。ここで、キーは属性タイプを表し、値はその属性の値を表します。
{ "attributes":
[
{
"key":"name",
"value":"Archit"
},
{
"key":"website",
"value":"stackoverflow"
},
{
"key":"languages",
"value":[
"python",
"java",
"c++"
]
}
]
}
jackson を使用して、次の Java オブジェクトにマップしようとしています。
public class Attributes {
List<Attribute> attributes;
}
public abstract class Attribute {
String key;
}
public class SingleValuedAttribute extends Attribute{
String value;
}
public class MultiValuedAttribute extends Attribute{
List<String> value;
}
ObjectMapper mapper = new ObjectMapper();
Attributes attributes = mapper.readValue(new File(jsonFilePath), Attributes.class);
ポリモーフィックなデシリアライゼーションを試してみましたが、json オブジェクトに型情報が必要でしたが、これは私の json に存在しませんか?
これを行う方法に関するヒントはありますか?
PS: json 形式を変更できません。キーのリストは制限されていません。