为什么在将字符串转换为JSONObject时,我得到了一个空对象?

6 浏览
0 Comments

为什么在将字符串转换为JSONObject时,我得到了一个空对象?

我在Android Studio(3.0.1)项目中编写了一个Java方法,用于从字符串创建一个JSONObject。现在我编写了一个JUnit测试来测试JSON对象是否正确。

问题总是JSONObject为NULL。

例如,我尝试运行以下代码:

String response = "{\"songs\":\"title\"}";
System.out.println(response);
JSONObject submitPlaylistResponse = new JSONObject(response);
System.out.println(submitPlaylistResponse.toString());

输出结果为:

{"songs":"title"}

null

为什么我的JsonObject仍然为null?我漏掉了什么?我觉得我漏掉了一些琐碎/简单的东西。

0
0 Comments

问题出现的原因是在创建JSONObject对象时,从字符串中解析数据时得到了一个空对象。解决方法是在build.gradle文件的dependencies中添加以下行:testImplementation 'org.json:json:20190722'。更多细节可以参考这个问题

0
0 Comments

当使用字符串创建一个JSONObject对象时,为什么会得到一个null对象?在查看JSONObject的代码后,我找到了问题所在。代码中的toString方法始终返回"null"字符串而不是null对象。

在这种情况下,如果任务是检查JSONObject的正确性,你可以参考Dator的回答或者使用toString(int indentSpaces)方法。

看起来toString(int indentFactor)方法也有问题。在之前的版本中这个方法是正常工作的,为什么会出现这样的bug呢?我猜是因为有人重写了这个类。这也是为什么我尽量少使用第三方库的原因(尽管org.json是我最信任的一个库,直到现在)。

0
0 Comments

问题出现的原因是可能你正在使用错误的库。请检查你的导入语句,正确的应该是 org.json.JSONObject;

我已经检查了你的代码,在我的 Android Studio 2.3 上是可以工作的。

解决方法是检查导入的库是否正确,确保导入的是 org.json.JSONObject; 的库。

0