java - 使用 Gson 从 JSON 初始化类的字段

标签 java json gson

我正在尝试使用 Gson 来初始化我的字段,但没有成功。

String complex = "{'menu': { 'id': 'file', 'value': 'File', 'popup': { 'task':
  [ {'value': 'New', 'onclick': 'CreateNewDoc()'}, {'value': 'Open', 'onclick': 'OpenDoc()'}, {'value': 'Close', 'onclick': 'CloseDoc()'}]
}}}";

尝试这样做:

TasksHolder th = gson.fromJson(complex, TasksHolder.class);

任务持有者类:

public class TasksHolder {

    List<Task> task;

    public TasksHolder() {
        task = new ArrayList<Task>();
    }
}

请指教如何才能使 TaskHoldertask 得到填充。

最佳答案

问题是通用类型删除。 GSON 不知道要创建什么类型的对象,因为您的类只包含一个列表(有关 Task 的类型信息丢失)。

这是 how to deal with this problem in GSON :

Type listType = new TypeToken<List<Task>>() {}.getType();
List<Task> tasks = gson.fromJson(myTasks, listType);

但这对您没有帮助,因为您需要父对象,而不仅仅是列表。恐怕你得write your own Custom Serialization and Deserialization methods

关于java - 使用 Gson 从 JSON 初始化类的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585752/

相关文章:

java - 来自 Jackson 2.2 的 ObjectMapper 的 pretty-print JSON

json - 具有多个动态命名字段的 Golang Json 解码

Java:Flat List<Map<String, Object>> 到 Hierarchical List<Map<String, Object>>

java - 管理我的 CLASSPATH 的最简单方法?

java - 将数据加载到引导表中

jquery - 如何通过 .Net MVC4 中的 JSON 通过 ajax 调用将复杂的 View 模型传递到 Controller 操作中?

java - 使用 gson 将对象转换为 json 时无法使 java.lang.reflect.Method 构造函数可访问

android - 使用 Retrofit 时手动解析部分响应

java - org.hibernate.NonUniqueObjectException : A different object with the same identifier value was already associated with the session

java - 如何创建AF :Table with Search and button From method Exposed in the ADF DataControl?