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

我已经使用JavaScriptSerializer在C#中编写了JSON序列化/反序列化类

    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);
    }

它在C#中效果很好。现在,我尝试转换或至少编写Java中的另一个JSON序列化/反序列化类。我已经尝试过 flexjson google-gson ,但是我不知道如何在Java中指定。

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

最佳答案

在Java中,您必须传递实际的类型擦除的类,而不仅是类型参数,因此数据绑定(bind)器知道要使用哪种类型。所以像这样:

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

但这通常只是反序列化所需要的;序列化时,您有一个实例,该实例带有一个可供库使用的类。

顺便说一句,您可能要考虑使用的另一个不错的Java JSON库是Jackson;但是,对于这个特定示例,您提到的所有库都应该起作用。

10-06 10:29