假设我有一个json
数组数组
String jsonString = [["John","25"],["Peter","37"]];
我想将其解析为ArrayList<ArrayList<String>>
对象。当我用
Gson.fromJson(jsonString,ArrayList<ArrayList<String>>.class)
它似乎不起作用,我通过使用进行了工作
Gson.fromJson(jsonString,String[][].class)
有一个更好的方法吗?
是的,请使用TypeToken
。
ArrayList<ArrayList<String>> list = gson.fromJson(jsonString, new TypeToken<ArrayList<ArrayList<String>>>() {}.getType());
将TypeToken
允许你指定你真正想要的泛型类型,这有助于GSON找到类型来使用反序列化过程。
它使用这种宝石:Class#getGenericSuperClass()
。它是匿名类的事实使它成为的子类TypeToken<...>
。相当于一个类
class Anonymous extends TypeToken<...>
该方法的规范指出
如果超类是参数化类型,则
Type
返回的对象必须准确反映源代码中使用的实际类型参数。
如果指定
new TypeToken<String>(){}.getType();
Type
返回的对象实际上是一个ParameterizedType
,您可以使用来检索实际的类型参数ParameterizedType#getActualTypeArguments()
。
在上面的示例中,类型实参将是Type
对象java.lang.String
。在您的示例中,它将是的对应Type
对象ArrayList<ArrayList<String>>
。Gson会一直走下去,直到建立了所需类型的完整地图。
假设我有一个< code>json数组数组 我想将其分解为<code>ArrayList
我发现了这个,但老实说不确定如何安装它或它是否适用。谢谢!
问题内容: 我想使用Streams.intRange(int start,int end,int step)实现反向排序的流。但是,似乎java.util.Streams类不再可用(但是它仍在标准库的rt.jar中)。此方法是在其他类中还是被其他方法替代? 问题答案: 实际上,JDK中再也没有这种方法了。您能获得的下一个最接近的位置是,但是只会一步一步走。 一种解决方案是实施您自己的解决方案。例如
AccessibilityService在系统的内存管理方面与普通服务有何不同? 我想问的是:系统可以为了节省内存而关闭AccessibilityService吗?如果可以,当您进入AccessibilityService时,您会看到它打开还是关闭?用户是否必须再次手动打开? 使用startForeground是否有助于使AccessibilityService保持活动状态? 在一个类似的问题中,
我正在学习谷歌在udacity制作的android课程中的例子,我用另一个例子替换了这个例子的url,但是我只能看到,使用日志只能看到我正在下载的url的一小部分。 您可以下载的数据量有限制吗? 我在日志中的回复: V/FetchWeatherTask︰预测JSON字符串:{"cod":"200","消息": 0.0506,"城市":{"id": 0,"name":"Mountain View",
问题内容: 此问题与跨域资源共享(CORS)有关。 如果在发出CORS请求时出现错误,Chrome(以及AFAIK其他浏览器)会将错误记录到错误控制台。消息示例可能如下所示: XMLHttpRequest无法加载。原产地不被访问控制允许来源允许的。 我想知道是否有办法以编程方式获取此错误消息?我尝试将调用包装在try/catch中,也尝试添加事件处理程序。两者均未收到错误消息。 问题答案: 看到: