java - java 中 Class<T[]> 的实例,以便在 json 解析器中使用

标签 java android json gson

我正在使用 json 谷歌库。我们可以这样:

Public Class JsonParsing<T> {   

     private Gson gson;

     public JsonParsing(GsonBuilder builder) {
         this.gson = builder.create();
     }

     public T[] fromJsonFromArray(String json, Class<T[]> classOfT) {
         return gson.fromJson(json, classOfT);
     }
}

我们如何创建 Class<T[]> 的实例为了传递给这个方法?

附录:

我尝试创建一个通用方法:

    public <T> T[] fromJsonFromArray(String json) {
        final Type type = new TypeToken<T[]>(){}.getType();
        return gson.fromJson(json, classOfT);
    }

看来我不能有T[]作为返回。那么如何解析json格式的数据数组呢? 注意:可以通过非通用方式来完成此操作。 我们就不能有通用的解决方案吗?

最佳答案

您可以将方法更改为:

public T fromJsonFromArray(String json, Class<T> classOfT) {
    return gson.fromJson(json, classOfT);
}

并像这样调用它(例如):

fromJsonFromArray(someString, new Byte[0].getClass());

注意:我觉得这应该是一个通用方法,如下所示:

public <T> T fromJsonFromArray(String json, Class<T> classOfT) {
    return gson.fromJson(json, classOfT);
}

如果您依赖于封闭类型中的类型参数(您的第一个示例就是这样做的),我看不出采用 classOfT 参数的目的。

关于java - java 中 Class<T[]> 的实例,以便在 json 解析器中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17360637/

相关文章:

java - Pax-web、jetty和RewriteHandler导致404

java - android应用程序按钮onClick监听器错误

android - Gradle脚本-在file.delete()之前完成等待操作

javascript - 在 JSON 中保存临时数据

mysql - 在 ruby​​ on Rails 中有效连接 JSON 列类型

java - JTextField Keylistener 无法删除输入

java - 嵌入式 Neo4j Java 节点和关系对象到 JSON

Android Spinner OnItemSelected 在使用 ArrayAdapter 的自定义子项时未触发

java - 使用 json simple 修改嵌套 JSONObject

java - 如何重写资源类中的 equals() 方法?