【发布时间】:2015-07-22 19:34:41
【问题描述】:
所以,我有一个字符串,它是我在一个类上实现的 toJson 方法的结果,并在我的测试代码中确认它是我的类的正确 Json 表示。我的目标是将此字符串转换为 JsonObject 并使用 Gson 将其传递给构造函数。但是,我遇到了一个奇怪的问题。
这是我正在调用的代码:
Gson gson = new Gson();
JsonObject jObj = gson.fromJson(jsonString, JsonObject.class);
我之前在我的项目中的许多地方都使用过完全相同的 sn-p 代码,用于其他类,并且运行良好。我什至将其中一个功能性的 sn-ps 代码复制到了这个测试类中并进行了尝试。但是,我尝试的每个版本都会产生相同的结果——jObj 是一组空括号。
我不明白这是怎么回事。我已经确认 jsonString 具有它应该需要的所有字段。为什么 Gson 返回一个空的 JsonObject?没有抛出异常。
【问题讨论】:
-
得到空JsonObject时jsonString的内容是什么?
-
字符串为 "{"varName":1, "otherVarName":2, "thirdVarName":3.4}" 等等。典型的 Json 对象
-
它对我有用,我得到了预期的输出。请展示一个演示问题的小程序。
-
如果添加
if (jsonString.trim().isEmpty()) throw new IllegalArgumentException();会怎样? -
如果我添加该代码,它不会抛出 IllegalArgument 异常。该字符串在任何时候都不是空的——只是返回的 JsonObject。不为空,而是为空。