来自Json的Gson解析列表有时返回null

时间:2017-05-15 16:28:14

标签: android json

我有一个应用程序通过Json数据与服务器通信。有时,服务器使用对象列表回复,应用程序使用以下语法解析json字符串:

List<My_Object_Type> list = new Gson().fromJson(json, new TypeToken<List<My_Object_Type>>() {}.getType());

通过我的应用程序日志,我始终打印服务器应答的内容,以便能够检查一切是否正确以及诊断错误。因此,我能够看到gson语法是否正确,如果服务器遇到问题或者......

应用程序工作正常,几乎99%的时间,但在剩余的1%左右,json List为null。这甚至不是数据结构的问题,也不是json String的问题,因为在同一个应用程序日志中,我看到完全相同的查询中的 完全 相同的json行,并没有问题。 问题:如果在另一个Thread(asynTask)上调用gson反序列化,是否会导致反序列化失败?我没有看到第一个呼叫有效的原因,第二个也是,但不是第三个呼叫。

为了进一步解决任何问题,我复制/通过Json字符串并通过完全相同的调用直接调用反序列化(也复制/粘贴)......并且它有效。

  • 首先工作 - &gt;没有数据结构错误
  • 使用复制/粘贴字符串 - &gt;没有字符串错误

反序列化的其他问题是什么?

PS:我读了导致“错误的json字符串”或“错误的对象结构”的其他问题,似乎并非如此,因为它之前使用完全相同的字符串....当然,我可以处理null变量并防止出现问题,但由于它不接受服务器发送的数据,因此可能导致不适当的行为......

编辑:主要问题是变量“list”为空。 Json字符串根本不为空:我在日志中检查了它[这不是我发现错误的第一次迭代]。它是My_Object_Type的完整列表,并且之前正确反序列化了完全相同的json字符串(我与之前的服务器请求相比)。这就是为什么我很惊讶。

为了更清楚:json字符串来自php中的“json_encode”函数,应用于PDO请求结果以获取数据库表内容。表格的每一行都是我的目标之一。 Json字符串根本不是null,并且之前正确反序列化,但有时候[为什么?这是问题]它没有正确反序列化,我得到一个空变量作为列表答案。

0 个答案:

没有答案