【发布时间】:2014-01-21 16:19:52
【问题描述】:
我有像这样的json:
{
"id": "AnId",
"type": "Button",
"parameter": {
"text" : "TestText"
}
}
参数可以是任何结构,也可以包含更多的 json 对象或数组,例如:
{
"id": "AnId",
"type": "RadioGroup",
"parameter": {
"groupname": "AGroupName",
"selected": "r2",
"radioboxes": [
{
"id": "r1",
"label": "radio1"
},
{
"id": "r2",
"label": "radio2"
}
]
}
}
但是,根据类型,可以知道参数是什么样的,例如
public class RadioGroup {
private String groupName;
// ..other primitive attributes here..
private Map<String, RadioBox> radioBoxes;
// ... getters/setters
}
public class RadioBox {
private String id;
private String label;
// ... getter/setters
}
但是在反序列化之前我不知道类型!
我想知道反序列化输入的最佳方法是什么?我不知道我是否获得按钮或无线电组 json?
到目前为止,我只是将给定的输入(按钮或复选框,尚不知道)反序列化为Map<String, Object>,如果它实际上是按钮,它工作正常,但如果我提供无线电组作为输入,我将获得 gson 的内部类型ArrayList<StringMap> 用于单选框。像 groupName 这样的原始参数很好 (String.class)。但是我该怎么做才能得到List<Map<String,Radiobox>> 而不是ArrayList<StringMap> 作为radioboxes 参数?
【问题讨论】:
标签: java json deserialization gson