Gson 序列化失败但不抛出错误

问题描述 投票:0回答:1

我有一个非常复杂的对象(因此我没有发布代码)我正在尝试使用这些调用进行序列化:

    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    PrintWriter output = new PrintWriter(new FileOutputStream("Hotels.json"));
    output.write(gson.toJson(myObject););

程序正常终止,但我得到的输出不完整,在大约 8000 行之后结束如下:

            ],
        "rate": 1.5,
        "ratings": {
          "cleaning": 1.5,
          "position": 4.0,
          "services": 1.5,
          "quality": 2.0
        },
        "rankScore": 1.5,
        "reviewsNum": 2,
        "reviews"

大量数据缺失且括号未闭合。 我试图确保不存在循环引用,但即使存在,没有抛出异常仍然看起来很奇怪。 有人知道会发生什么吗?

java json gson
1个回答
1
投票

没有完整的代码很难分析这个问题。我建议您尝试使用单元测试或不执行任何其他操作的“小”程序来重现问题。

无需访问数据库等,只需在代码中“手动”创建对象树并序列化即可。然后,单元测试必须将字符串中的结果而不是文件中的结果与预期的字符串进行比较,因此您可能希望在没有真正的测试的情况下开始,但使用一个写入文件的小程序,您可以手动检查它。

然后减少您序列化的对象结构 - 我会尝试使用“一半”大小,但这实际上取决于您的结构。尝试找出是否存在从奇怪结果“切换”到合理结果的变化。也许这足够小,您可以将其与可重现的示例一起发布在这里,或者您在 GSon 或您自己的对象结构中发现错误。

© www.soinside.com 2019 - 2024. All rights reserved.