gpt4 book ai didi

未找到 Java JSON 对象

转载 作者:行者123 更新时间:2023-12-01 18:45:55 25 4
gpt4 key购买 nike

我在使用 JSON 和 Java 时遇到了一些问题,我有一个工作函数可以将数据结构导出为 JSON 并将其保存在文件中。但是当我尝试执行相反的操作并将数据结构导入回 java 时,出现错误,其输出为:

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at .....
Caused by: java.lang.RuntimeException: JSONObject["nodeID"] not found.
at processing.data.JSONObject.get(JSONObject.java:549)
at processing.data.JSONObject.getString(JSONObject.java:568)
at Graph.loadJSON(Graph.java:934)
... 21 more

从该错误中,我认为在节点内找不到字符串“nodeID”,但它位于 JSON 输出中,如下所示:

{"network": [
{"node": {
"nodeID": "1",
"radius": 40

"atom": {
"id": "a-2675-EH",
"activeTime": 0,
"type": "Motor",
"linkFrom": [{
"atomID": "a-2312-TL",
"delay": 0.20000000298023224
}],
"linkTo": [{
"atomID": "a-3289-Ql",
"delay": 0.20000000298023224
}]
},
.....

JSON代码是网络中包含的节点数组,然后每个节点对象包含一个字符串nodeID,和3个Float变量,然后是一个称为atom的对象。然后,该原子包含两个字符串、一个 float 和 2 个名为 linkTo 和 linkFrom 的数组,其中包含表示链接的对象(atomID 和延迟、字符串和 float )

从网络加载每个节点的 Java 代码如下所示:

JSONObject network = loadJSONObject(selection.getAbsolutePath());            
JSONArray nodes = network.getJSONArray("network");

for (int i=0; i<nodes.size(); i++)
{
//Load node
JSONObject node = nodes.getJSONObject(i);
String nodeID = node.getString("nodeID"); <-- Error occurs here
Float x = node.getFloat("x");
Float y = node.getFloat("y");
Float radius = node.getFloat("radius");
JSONObject atom = node.getJSONObject("atom");
.....

我确信我只是错过了一些简单的东西,但我花了近一周的时间试图调整它,但一无所获!

我知道节点加载正确,因为 for 循环内的 println(node) 语句完全按照应有的方式打印出节点,它只是试图获取似乎不起作用的 nodeID。即使我更改顺序并尝试获取也会导致错误的 x 或 y float 。

谢谢。

最佳答案

正如我的评论所说,

node.getString("nodeID"); 替换为 node.getJSONObject("node").getString("nodeID"); 应该可以解决问题。

这是因为 getJSONArray() 为您提供方括号内的所有 JSON 对象。 node.getString("nodeID"); 实际上给出了下面的 JSONObject,

{"node":{"nodeID": "1","radius": 40......

因此要获取节点,需要调用getJSONObject("node")

关于未找到 Java JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17808618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com