空json对象而不是null,当没有数据时 - >如何用gson反序列化

msa*_*sal 2 java null json gson deserialization

我正在尝试用Google的gson库解析json数据.但是json数据表现不佳.

当一切顺利时,它看起来像这样:

{
    "parent": {
        "child_one": "some String",
        "child_two": "4711",
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

child_one应该解析为String,child_twoas int.但有时候其中一个孩子没有导致空对象的值,而不是null像这样:

{
    "parent": {
        "child_one": "some String",
        "child_two": {},
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有权限改变json feed,因此我必须在反序列化期间处理它.但我迷失在这里.如果我只是让它解析第二个案例给我一个JsonSyntaxException.

我想过使用自定义JsonDeserializer.有没有像检查每个元素一样的东西JsonObject,如果它是,如果它是,检查是否entrySet.isEmpty().如果是,请删除该元素. 但我不知道如何完成迭代......

Ada*_*sko 6

在将它传递给GSON之前,你不能只用NULL替换{}吗?

  • @Adassko这是正确的想法.在传递数据之前,我只需对数据执行此操作:`json.toString().replace("{}","null");` (3认同)
  • 这如何能够成为公认的答案,这超出了我的范围。您建议在解析之前通过字符串替换手动避免它,而不是编写成功解析包含空对象的 JSON 的代码(这是完全有效的)? (2认同)