找不到Java JSON对象

找不到Java JSON对象,java,json,runtime-error,processing,invocationtargetexception,Java,Json,Runtime Error,Processing,Invocationtargetexception,我在JSON和Java方面遇到了一些问题,我有一个工作函数可以将数据结构导出为JSON并保存在文件中。但当我尝试反向操作并将数据结构导入java时,我得到一个错误,其输出为: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at ..... Caused by: java.lang.RuntimeException:

我在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个浮点变量,然后是一个名为atom的对象。然后,这个原子包含两个字符串、一个float和两个名为linkTo和linkFrom的数组,其中包含表示链接的对象(分别是atomID和delay、string和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");
    .....
JSONObject network=loadJSONObject(selection.getAbsolutePath());
JSONArray节点=network.getJSONArray(“网络”);
对于(inti=0;i,正如我的评论所说

node.getString(“nodeID”);
替换为
node.getJSONObject(“node”).getString(“nodeID”);
应该可以解决这个问题

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

{“节点”:{“节点ID”:“1”,“半径”:40

因此,要获得node,您需要调用
getJSONObject(“node”)

,正如我的评论所说

node.getString(“nodeID”);
替换为
node.getJSONObject(“node”).getString(“nodeID”);
应该可以解决这个问题

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

{“节点”:{“节点ID”:“1”,“半径”:40


因此,要获取节点,您需要调用
getJSONObject(“node”)

尝试将
node.getString(“nodeID”);
替换为
node.getJSONObject(“node”).getString(“nodeID”)
Ahh好极了,现在开始工作了!如果你不介意的话,你能解释一下为什么你必须使用getJSONObject吗?因为我已经有了node的JSONObject,所以如果你明白我的意思,那不就是说node-node-nodeID吗?
getJSONArray()
将为您提供方括号内的所有JSON对象。您实际拥有的是JSONObject
{“node”:{“nodeID”:“1”,“radius”:40…
…因此,为了获得节点,我们必须执行
getJSONObject(“node”)
啊,当然是的,谢谢!)@ShashankKadne能否请您添加有用的注释作为答案,以便对其进行投票/标记?尝试将
node.getString(“nodeID”);
替换为
node.getJSONObject(“node”).getString(“nodeID”)
Ahh好极了,现在开始工作了!如果你不介意的话,你能解释一下为什么你必须使用getJSONObject吗?因为我已经有了node的JSONObject,所以如果你明白我的意思,那不就是说node-node-nodeID吗?
getJSONArray()
将为您提供方括号内的所有JSON对象。您实际拥有的是JSONObject
{“node”:{“nodeID”:“1”,“radius”:40…
…因此,要获得节点,我们必须执行
getJSONObject(“node”)
Ahh当然可以,谢谢!:)@ShashankKadne您能添加有用的评论作为答案,以便投票/评分吗?