首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从字符串创建Java JSONArray

无法从字符串创建Java JSONArray
EN

Stack Overflow用户
提问于 2016-03-23 19:35:08
回答 2查看 516关注 0票数 0

我从一个文件获得一个JSON字符串,如下所示:

"[ { "id":"eVgoHOU0000000011“、”网络“:{ "networkName":"EVgo”}、“状态”:“可用”、“插件”:9、“站名”:“批发市场”、“描述”:“商店旁边非常可靠的站点”。)、“位置”:{“纬度”:30.596481,“经度”:-96.353554,地址:{ "address1":“黄金英亩”,"address2":“二楼”,“城市”:“大学车站”,“州”:"TX","zipcode":"77029“},“描述”:“地图标记位置在加油站旁边。”},“连接器”:{“类型”:“美国墙出口”,“电源”:"40安培“,”状态“:”U知名“},{”类型“:”美国墙出口“,“电源”:"40安培“,”状态“:”U知名“},{”类型“:"CHAdeMO",”电源“:"40安培”,“状态”:“不可用”},"planName":“不收费”}]“

我想把它转换成这样的JSONArray:

代码语言:javascript
复制
Scanner scanner = new Scanner(file);
String json = scanner.useDelimiter("\\A").next();
JSONArray array = new JSONArray(json);`

但是,数组对象始终为空。这里怎么了?

当我使用以下代码时,更新在我的Android代码中正确工作:

Scanner scanner = new Scanner( context.getResources().openRawResource(R.raw.radar_search));

但是当我从一个文件中创建我之前的扫描器时,它就不能工作了。一定有什么是Android框架做的正确的,Java不是.

更新2我已经能够隔离这个问题。当我用Junit4对我的安卓应用程序进行白盒测试时,就会发生这种情况。因此,我正在构造这个新的对象类,它有一个创建JSONArray的助手方法,并且它不会在junit运行期间被创建。不过,它在普通的java代码运行时中可以很好地创建。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-24 15:05:58

我找到了这个问题的真相,并找到了解决办法。结果发现,Android中的Junit测试无法访问Java库。它们只能访问存根(默认情况下会抛出异常)。因此,必须输入整个json库进行测试:

代码语言:javascript
复制
testCompile 'org.json:json:20160212'

您可以在maven central:http://mvnrepository.com/artifact/org.json/json上找到json的最新版本号。

票数 0
EN

Stack Overflow用户

发布于 2016-03-23 19:57:06

如果文件包含外部双引号,那么new JSONArray(...)将抛出JSONException。如果没有,我看不出有什么问题。

技术上,Java构造函数不能返回null。使用调试器执行代码。你可能忽略了一个不寻常的例外。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36187190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档