当前位置: 首页 > 知识库问答 >
问题:

如何使用GSON。变量中提供类型为fromJson的?

程鸿煊
2023-03-14

我想通过以下方式使用GSON. fromJSON:

Class<?> type = Abc.class;
Class<?> parametersObject = GSON.fromJson(parameters, type);

但我在第二行遇到编译错误。如何推断以下行的返回类型?我知道在上述情况下,它将是Abc类型的。但我想根据类型变量中指定的内容使其成为动态的。我该怎么做?

共有1个答案

商昂然
2023-03-14

用下面的代码试试。有一个关于T在类和方法签名、链接中的区别的问题。

public class Tests<T> {

    @Test
    public void test01() {
        Tests<String> stringTest= new Tests<>();
        System.out.println(stringTest.parseObject("testtestt", String.class));
    }

    public T parseObject(String parameters, Class<T> clazz) {
        Gson gson = new Gson();
        T obj = (T) gson.fromJson(parameters, clazz);
        return obj;
    }
}

"UPD:
声明<代码>

@Test
public void test02() {
    String stringstring = parseObject02("stringstring", String.class);
    System.out.println(stringstring);
    List list = parseObject02("[1,2,3]", List.class);
    System.out.println(list);
//        output in console
//        stringstring
//        [1.0, 2.0, 3.0]
}

public <T> T parseObject02(String parameters, Class<T> clazz) {
    Gson gson = new Gson();
    T obj = gson.fromJson(parameters, clazz);
    return obj;
}
 类似资料:
  • 您将获得对象(或对象列表),而不是作为传递的实际对象(或第二种情况下的实际对象列表)。 如果您想要一个仍然想要反序列化泛型类型对象(-s),请参阅下面的答案。 +红利:LoopJ+GSON的最终通用解决方案 如何获取泛型接口的具体类型 Java类型Generic作为GSON的参数

  • 我有2种类型的类型类,其中一种类型包含另一种类型 我想这样称呼我的类型类: 但这行不通。 错误:(34,23)找不到参数e的隐式值:com.playground.Valides[com.playground.MyModel1,model.version.type]val v=隐式[Valides[MyModel1,model.version.type]]错误:(34,23)没有足够的隐式方法参数:

  • 我不熟悉泛型,并且深入研究了一些基本上超出我知识范围的东西,所以请耐心听我说。也许我问的问题很傻,但我似乎无法找到一个明确的答案来说明我希望做的事情是否可行,也许是因为我不知道要寻找的正确术语。 我有两个Java类,它们由一个T类型的实体参数化——一个存储库和一个服务。由于我的所有存储库和所有服务都将执行一些相同的基本任务,因此我的通用repo和服务已经实现了上述任务,并通过受保护的功能将它们提供

  • 问题内容: 除了Swift,我还有这个问题。如何Type在泛型中使用变量? 我尝试了这个: This didn’t work either: 有没有办法做到这一点?我感觉到Swift只是不支持 它,并且给了我一些模棱两可的错误消息。 编辑:这是一个更复杂的示例,其中无法 使用通用函数标头来解决问题。当然,这没有任何意义, 但是我在代码中的某处合理地使用了这种功能 ,宁愿发布一个干净的示例而不是我的

  • 问题内容: 只是好奇是否有一种方法可以在netbeans中为常规变量提供类型提示,以便intellisense可以选择。我知道您可以针对类属性,函数参数,返回类型等执行此操作,但是我不知道如何针对常规变量执行此操作。在您拥有可以返回不同对象类型(例如服务定位符)的方法的情况下,这确实有帮助。 例如: 之后使用$ someService的地方,netbeans将提供在Some_Service类中定义

  • react用vite搭建的项目 想要做代码提示,必须声明variables的类型,不想再像下面这样写一遍。 想直接根据scss中定义的变量生成类型声明,要怎么做?类似 但是因为variables是个cssmodule,而不是个具体的对象,上面的写法还是不行? 有没有好的方式解决?