【发布时间】:2017-10-04 15:42:54
【问题描述】:
我在反序列化包含 0 到多个子对象的对象时遇到了一些麻烦,这些子对象可以包含特定值的字符串或字符串数组。
这是一个 JSON 示例
{
"name": "process name",
"tasks": [{
"name": "task 1",
"fields": [{
"name": "field 1",
"value": "123abc"
},
{
"name": "field 2",
"value": ["value 1", "value 2"]
}
]
},
{
"name": "task 2",
"fields": []
}]
}
我有一个 Java 实体设置来匹配这个结构,如下所示:
public class Process {
public Process() {}
public String name;
public Task[] tasks;
}
public class Task {
public Task() {}
public String name;
public Field[] fields;
}
public class Field {
public Field() field;
public String name;
public String value;
}
我像这样反序列化:
static <T> T fetch(MyHttpRequest request, Class<T> entity)
{
String response = sendRequestAndParse(request);
if (response == null) {
log.debug(String.format("API response was null %n)"));
return null;
}
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
return gson.fromJson(response, entity);
}
我使用动态类型是因为除了 Process 之外还有许多其他实体我使用相同的方法。但是我不知道如何处理字段值可以是字符串到字符串数组的情况。任何指针将不胜感激。
【问题讨论】: