最近在做一个联动列表功能的时候,遇到一个非常奇怪的错误。刚点进去页面就会卡住假死。看了代码感觉没啥问题。然后一步步排查。
首先我以为是数据量比较大,把页面卡住了。打印出从服务器取得的json字串发现不是很多。
然后注掉取数据代码,从本地模拟数据加载,发现没问题。这好奇怪。
我又把adapter的notifyDataSetChanged放到handler去执行,结果还是不行。。
控制台一直没有错误信息。。。
后来发现一个打印信息,原来公司使用了一个自己的统计工具(类似友盟),所以我的异常信息都被拦截了,没有打印到控制台。查看工具的打印信息,里面有个gson的错误,
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to cn.XXX.XXX.sale.bean.SubCategory
说明在json转换成集合的时候报错了。我的分类实体里有一个子类集合的属性。我在声明的时候 private List subCategoryList;
只这样是不行的! private List<SubCategory> subCategoryList;就可以完美转换了!
另附gson转换代码
List<Category> tmp = gson.fromJson(categorrStr, new TypeToken<List<Category>>(){}.getType());
相关推荐
在遇到错误“com.google.gson.JsonObject.keySet()Ljava/util/Set”时,可能的原因有: 1. **版本冲突**:可能当前项目中使用的Gson版本与阿里云SDK中的版本不兼容,导致某些API的调用方式发生了变化。 2. **代码...
谷歌Gson库是Java开发中广泛使用的JSON解析和序列化工具,版本2.8.0是其一个稳定且功能丰富的版本。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。...
Gson是一个Java库,用于将Java对象转换为JSON字符串,以及从JSON字符串反序列化回Java对象,广泛应用于Android开发中。 错误产生的原因是项目同时通过两个不同的路径引用了Gson库:一方面可能是直接在项目的build....
在转换过程中遇到异常时,GSON会抛出`JsonSyntaxException`、`JsonParseException`等,便于开发者捕获并处理错误。 总之,GSON库在处理JSON数据时提供了强大而灵活的解决方案,其源码解析有助于开发者理解其内部...
在反序列化过程中遇到不匹配的数据类型时,Gson会提供更清晰的错误信息,帮助开发者快速定位问题。 在使用Gson进行序列化时,可以通过注解来控制特定字段的行为。例如,`@Expose`注解可以指定哪些字段应该被序列化...
3. 错误处理:在解析过程中遇到错误,如JSON格式不正确,Gson会抛出异常,需要捕获并处理。 总结,Gson为Java开发者提供了简洁、高效的JSON处理方式,无论是简单的数据转换还是复杂的序列化需求,都能轻松应对。在...
本文将深入探讨如何封装一个Gson解析工具类,以优雅地处理JSON数据,尤其是避免在解析过程中遇到`String`为`null`时产生的错误。 首先,我们需要引入Gson库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下...
7. **容错模式**:在解析过程中遇到错误时,可以开启Gson的容错模式,通过捕获异常并进行适当处理,避免程序中断。 在`Gson-adapter-master`这个压缩包文件中,可能包含了一个关于Gson适配器的示例项目或库,它可能...
例如,你可以通过`Gson().toJson(yourObject)`将一个Java对象转换为JSON格式。 2. JSON反序列化:Gson也支持将JSON字符串解析回相应的Java对象。这在接收服务器响应或读取JSON文件时很有帮助。你可以使用`Gson()....
10. **错误处理**:在解析过程中遇到问题,如JSON格式错误或类型不匹配,Gson会抛出异常,便于开发者调试和处理。 了解并熟练掌握这些知识点,将使你在处理JSON数据时游刃有余。Gson库的易用性和灵活性使其成为Java...
通过`Gson()`构造函数创建一个Gson实例后,你可以使用`toJson()`方法将Java对象转换为JSON格式的字符串,而`fromJson()`方法则可以将JSON字符串还原为相应的Java对象。 2. **对象映射机制** Gson通过反射机制自动...
在转换过程中遇到问题时,Gson会抛出异常,如`JsonSyntaxException`,`JsonParseException`等,帮助开发者定位问题。 在实际开发中,Gson库广泛应用于Android和Java Web服务中,简化了JSON数据的处理,提高了开发...
Gson 2.7是这个库的一个版本,提供了许多增强的功能和改进,以更好地支持JSON序列化和反序列化。 在Gson 2.7中,有几个重要的知识点值得我们深入探讨: 1. **API稳定性和兼容性**:Gson 2.7在设计时注重了API的...
8. **错误处理**:在序列化或反序列化过程中遇到问题时,Gson会抛出异常,如`JsonSyntaxException`、`JsonParseException`等,帮助开发者识别并解决错误。 9. **性能优化**:Gson设计得相当高效,它避免了不必要的...
例如,你可以创建一个`Gson`实例来将Java对象转换成JSON字符串,或者使用`fromJson()`方法将JSON文本解析为Java对象。 3. **gson-2.3.1-sources.jar**:这个文件包含了Gson库的源代码。开发者可以查看源码来深入...
下面是一个简单的使用示例,展示了如何使用Gson进行对象的序列化和反序列化: ```java import com.google.gson.Gson; public class User { private String name; private int age; // 构造函数、getters和...
4. **错误处理**:当遇到无效的JSON数据或不匹配的Java类型时,GSON如何处理异常。 总之,GSON的源码是学习Java JSON处理、反射、类型转换和设计模式的宝贵资源。通过深入研究,不仅可以理解其工作原理,还可以为...
4. 序列化Java对象:反过来,如果你有一个Java对象需要转换成JSON,可以使用Gson的`toJson()`方法。比如,`Gson().toJson(user)`会返回一个表示User对象的JSON字符串。 5. 处理复杂数据结构:Gson能处理嵌套的JSON...
谷歌的Gson库是Java开发中的一个强大工具,主要用于JSON数据的序列化和反序列化。这个"google-gson-2.2.4"版本是Gson库的一个稳定发行版,发布于几年前,但至今仍被许多项目所使用。在这个版本中,我们可以期待一些...
Gson 2.8.4是这个库的一个较新版本,包含了对JSON序列化和反序列化的优化以及对Java 9新特性的支持。 Gson的核心功能在于将Java对象转换为JSON字符串,同时也能够将JSON文本解析为等效的Java对象。这使得在处理JSON...