好吧,我不得不承认我不擅长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;但是,对于这个特定示例,您提到的所有库都应该起作用。