gpt4 book ai didi

java - 如何在Java中为gson确定运行时对象的类型

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:57 24 4
gpt4 key购买 nike

看一下下面的代码,它运行得很好:

        MyData myData = new MyData(1, "one");
MyData myData2 = new MyData(2, "two");
MyData [] data = {myData, myData2};

String toJson = gson.toJson(data, MyData[].class);

MyData [] newData = gson.fromJson(toJson, MyData[].class);

MyData 只是一个带有 int 和 String 字段的简单类。这工作得很好。但是,如果类直到运行时才知道怎么办?例如它可能不是“MyData”,但可能是一个完全不同的类。我们唯一知道的是类的名称(表示为字符串),该名称之前由发送者使用 Class.forName 确定。

如果对象不是数组,它就可以正常工作,如下所示:

    final Class<?> componentType = Class.forName(componentClassName);
context.deserialize(someElement, componentType);

上述技术不适用于数组。

有什么建议吗?

最佳答案

您的意思是 MyData 将成为泛型类型 T 吗?如果是这样,由于 Java 类型删除,您将无法执行此操作。类型 T 仅在编译时可用。

您可以创建如下方法:

public T decodeJSON(String json, Class<T> type) {
GSON gson = new GSON();
return gson.fromJson(json, type);
}

关于java - 如何在Java中为gson确定运行时对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com