获取Java中的JSON嵌套数组元素
我使用获取Java中的JSON嵌套数组元素,java,arrays,json,org.json,Java,Arrays,Json,Org.json,我使用org.json查找json对象和值(org.json是一项要求),并尝试访问子数组元素 我的json: { "Info": { "name": "my_json", }, "my_array": { "arrays": [ { "array 1": [ { "name": "red", "server": "red1", "capacity":
org.json
查找json对象和值(org.json
是一项要求),并尝试访问子数组元素
我的json:
{
"Info": {
"name": "my_json",
},
"my_array": {
"arrays": [
{
"array 1": [
{
"name": "red",
"server": "red1",
"capacity": "123"
},
{
"name": "blue",
"server": "blue1",
"capacity": "456"
}
]
},
{
"array 2": [
{
"name": "white",
"server": "white1",
"capacity": "1234"
},
{
"name": "black",
"server": "black1",
"capacity": "4567"
}
]
}
]
}
}
这将产生:
{"array 1":[
{"name":"red","capacity":"123","server":"red1"},
{"capacity":"456","name":"blue","name":"blue1"}
]}
{"array 2":[
{"capacacity":"1234","name":"white","server":"white1"},
{"name":"black","capacity":"4567","server":"black1"}
]}
{"array 1":[
{"name":"red","capacity":"123","server":"red1"},
{"capacity":"456","name":"blue","name":"blue1"}
]}
{"array 2":[
{"capacity":"1234","name":"white","server":"white1"},
{"name":"black","capacity":"4567","server":"black1"}
]}
该方法如下所示:
public static String processJson(String[] args) throws JSONException {
String value = "";
String jsonData = readFile(args[0]);
JSONObject jobj = new JSONObject(jsonData);
if (args[1].equals("my_array")) {
JSONObject parent = jobj.getJSONObject("my_array");
JSONArray jarr = parent.getJSONArray("arrays");
for (int i = 0; i < jarr.length(); i++) {
for (int j = 0; j < jarr.length(); j++) {
JSONObject test1 = jarr.getJSONObject(j);
System.out.println(test1);
}
}
}
return value;
}
是否可以获取数组1
元素?
我以为嵌套循环会处理它,但它只在同一时间输出 如果只需要第一个元素,则不需要循环
JSONObject test1 = jarr.getJSONObject(0);
System.out.println(test1);
如果您想格式化test1
您可以
System.out.println (test1.toString ().replace ("{\"array 1\":", ""));
什么是args[1]?@jeanr我猜它是
my_array
当我试图读取json有效负载的结构时,它看起来是这样的:my_array.array[0]。“array 1”my_array.array[1]。“array 1”你确定你的json格式排列整齐,即在适当的层次结构或关系中吗?很好!删除了两个循环!如果数组1作为参数传递,您将如何删除它?例如,replace(“{\”变量名\“:”,”)
不会删除该字符串。您可以使用类似str.replace(var,”)
的变量,其中var
是类似var=“{\”+”数组1“+”:”;
System.out.println (test1.toString ().replace ("{\"array 1\":", ""));