- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想将不同的列表集合传递给 GSON 中的 TypeToken 类。这是我的课
public class ConvertToObject<T> {
public T MappFrom(InputStream is)
String json = ConvertJsonInputStream.toString(is);
Gson gson = new Gson();
Type typeOfDest = new TypeToken<T>() {
}.getRawType();
T lstObject = gson.fromJson(json, typeOfDest);
return lstObject ;
}
}
现在我想以不同的方式实例化我的类,如下所示:
AssetManager am = getApplicationContext().getAssets();
InputStream is = am.open("form.txt");
ConvertToObject<List<Form>> co = new ConvertToObject<List<Form>>();
List<Form> JsonForm = co.MappFrom(is);
InputStream is2 = am.open("Messages.txt");
ConvertToObject<List<Messages>> co = new ConvertToObject<List<Messages>>();
List<Messages> JsonForm = co.MappFrom(is2);
我的 Assets 文件夹中有 27 个 Json txt 文件,我想将这些 JSON txt 文件解析为它们适当的类。我应该怎么做?
已编辑:这样我就捕获了一个异常:
Caused by: java.lang.ClassCastException: com.google.gson.internal.StringMap cannot be cast to com.mypackage.Form
最佳答案
我这样解决了我的问题
public class ConvertToObject<T> {
public List<T> mapFrom(InputStream is, Type typeOfDest) {
String json = ConvertJsonInputStream.toString(is);
Gson gson = new Gson();
List<T> lstForm = gson.fromJson(json, typeOfDest);
return lstForm;
}
在我的 Activity 中我有这段代码:
ConvertToObject<Menu> co = new ConvertToObject<Menu>();
Type typeOfDest = new TypeToken<List<Menu>>() {
}.getType();
AssetManager am = getResources().getAssets();
Log.i("AssetManager", "AssetManager");
InputStream is = null;
try {
is = am.open("menu.txt");
} catch (IOException e) {
Log.i("InputStream", e.getMessage());
}
List<Menu> JsonForm = co.mapFrom(is, typeOfDest);
关于android - 如何在 GSON TypeToken 类中使用自定义泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668932/
我正在尝试解决反序列化 HashMap 时遇到的问题。为了寻找答案,我发现了以下问题: com.google.gson.internal.LinkedTreeMap cannot be cast to
我有TypeToken类用于表示一些通用类型,如下所示: TypeToken> listOfStrings = new TypeToken> {} 这很好用,TypeToken只是class Type
在将列表转换为 json 时,必须使用 TypeToken(如 Gson 文档中的建议)作为类型,如下所示 - new Gson().toJson(dateRange, new TypeToken>(
我有一些使用泛型和 TypeTokens 反序列化 JSON 的服务代码。需要该服务来反序列化保留其通用参数类型的复杂 TypeToken。 这是创建它的代码: TypeToken> makePol
跟进How to use TypeToken to get type parameter? ,似乎如果我使用工厂方法实例化一个类,则 TypeToken 不再能够捕获泛型类型参数。 import co
网络服务器:tomcat 网络框架:spring3 我用的是gson-2.3.1 按照错误日志 java.lang.ClassNotFoundException: com.mysite.chart.*
我正在使用 Guava TypeToken在我的项目中上课,但我得到了意想不到的结果。 我有MyGenericClass : public class MyGenericClass implement
我知道在 Java 中与 C# 泛型相反,例如,C# 泛型是编译时特性,并且通过类型删除被删除。那么,Gson 的 TypeToken 究竟是如何工作的呢?它如何获取对象的泛型类型? 最佳答案 Fro
我正在开发一个框架,用于为 Selenium 测试框架构建通用菜单,并且我一直在使用 Guava TypeToken 来解析通用参数的类型,但现在我遇到了一个问题,类型 token 没有解析参数: 我
我有以下结构的 map Map即转换为 gson new Gson().toJson(obj);为了设置转换 Identity 对象的规则,我使用此结构 new TypeToken(){}.getTy
我的类 TypeRegisterer 允许客户端注册参数化类型(使用与 TypeRegisterer 相同的参数),然后使用其原始类型名称实例化它们。 我当前的解决方案有效,但我有一个未经检查的强制转
由于 Java 中没有类型文字,TypeToken通常使用技巧。比如说,你想要一个 Type表示 List 的实例,你会这样做: new TypeToken>(){}.getType() 现在,我想知
我想做这样的事情——使用 Gson 反序列化一个具有通用类型的类。下面的代码就像一个魅力。 Type type = new TypeToken>() {}.getType(); ActionTask
我为一种名为 ASN.1 的文件格式编写了一个解析器,它使用 Guice 的 TypeLiteral.getFieldType(Field)将通用字段转换为特定的 Java 类型,以便我可以构造正确的
我想将不同的列表集合传递给 GSON 中的 TypeToken 类。这是我的课 public class ConvertToObject { public T MappFrom(InputStrea
我无法理解TypeToken谷歌的 GSON api 的 fromJson方法。下面的代码对我来说理解起来非常复杂...... Gson gson = new Gson();
我可以获取任何类类型的 com.google.gson.reflect.TypeToken,例如 String Type responseType = new TypeToken() {
在 GSON 中,我接下来可以: Type envelopeType = TypeToken.getParameterized(RestResponse.class, type).getType();
我正在将 TypeToken 传递给方法。下面的代码可以工作,但我担心如果不明确地将 Object list 定义为更具体的东西,稍后会困扰我,但我无法找到一种方法将其定义为或将其转换为其他任何东西而
我有两个代码片段执行完全相同的操作。如果可以使用Class,那么什么场景下会使用TypeToken? public static List readJsonArray(String filename
我是一名优秀的程序员,十分优秀!