gpt4 book ai didi

java - 如何通过 Java 中的一个值获取 JSON 对象?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:42 24 4
gpt4 key购买 nike

尝试用 Java 解析多级 JSON。

以如下格式输入 JSON:

{"object1":["0","1", ..., "n"], 
"objects2":{
"x1":{"name":"y1","type":"z1","values":[19,20,21,22,23,24]}
"x2":{"name":"y2","type":"z2","values":[19,20,21,22,23,24]}
"x3":{"name":"y3","type":"z1","values":[19,20,21,22,23,24]}
"x4":{"name":"y4","type":"z2","values":[19,20,21,22,23,24]}
}

并且需要通过其中一个属性从 2 中获取所有对象,例如获取所有类型为 z1 的对象。

使用 org.json*。

试图做这样的事情:

JSONObject GeneralSettings = new JSONObject(sb.toString()); //receiving and converting JSON;
JSONObject GeneralObjects = GeneralSettings.getJSONObject("objects2");
JSONObject p2;

JSONArray ObjectsAll = new JSONArray();

ObjectsAll = GeneralObjects.toJSONArray(GeneralObjects.names());

for (int i=0; i < GeneralObjects.length(); i++){
p2 = ObjectsAll.getJSONObject(i);
switch (p2.getString("type")) {
case "z1": NewJSONArray1.put(p2); //JSON array that should contain values with type z1.
break;
case "z2": NewJSONArray2.put(p2); //JSON array that should contain values with type z2.
default: System.out.println("error");
break;
}
}
}

但是获取空指针异常和整体方法好像不太好。

请指教,有什么方法可以让它更容易,或者我做错了什么?

最佳答案

如果您收到 NullPointerException,很可能是您尚未初始化 NewJSONArray1NewJSONArray2

你没有包括他们的声明,但你可能只需要做

NewJSONArray1=new JSONArray();
NewJSONArray2=new JSONArray();

在你的循环之前。

旁白:按照约定,java 变量应该以小写字母开头,例如newJSONArray1

关于java - 如何通过 Java 中的一个值获取 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24957391/

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