JSON使用google-gson序列化/反序列化泛型类型

Tua*_*-Vu 5 java serialization json gson deserialization

好吧,我必须承认我不擅长Java中的泛型类型

我在C#中编写了一个JSON序列化/反序列化类 JavaScriptSerializer

    private static JavaScriptSerializer js = new JavaScriptSerializer();

    public static T LoadFromJSONString<T>(string strRequest)
    {
        return js.Deserialize<T>(strRequest);
    }

    public static string DumpToJSONString<T>(T rq)
    {
        return js.Serialize(rq);
    }
Run Code Online (Sandbox Code Playgroud)

它在C#中运行良好.现在我正在尝试转换或至少在Java中编写另一个JSON序列化/反序列化类.我尝试过flexjsongoogle-gson,但我不知道如何在Java中指定<T>.

有人可以帮帮我吗?顺便说一句,我更喜欢google-gson

Sta*_*Man 9

在Java中,您必须传递实际类型擦除的类,而不仅仅是类型参数,因此数据绑定器知道要使用的类型; 像这样的东西:

public static T LoadFromJSONString<T>(string strRequest, Class<T> type)
{
    Gson gson = new Gson();
    return gson.fromJson(strRequest, type);
}
Run Code Online (Sandbox Code Playgroud)

但通常只需要反序列化; 在序列化时,您有一个具有库可以使用的类的实例.

顺便说一句,你可能想要考虑使用的另一个优秀的Java JSON库是Jackson ; 但是,对于这个特定的例子,你提到的所有库都应该有效.

  • 您可以使用Class.forName("com.example.Response")来查找它. (2认同)