以下是json将从合作伙伴应用程序收到,作为我们最终执行操作的输入。
{"path":"/test1" ,"children":[{"path":"/test2"},{"path":"/test3","children":[{"path":"/test4","children":[{"path":"/test5"}]}]}]}
儿童键的值是JsonArray。根据json中的指定,子键可能嵌套n次。
下面java类用于解析提到的json,并且在许多论坛中建议递归程序将花费更多的时间来执行。请让我知道解析这个json的更好方法。
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class TestJsonDynamic {
public static void parsejson(JSONArray json)
{
//System.out.println("Outer Array --- "+json);
for(int k=0;k<json.length();k++)
{
try {
JSONObject json2=(JSONObject)json.get(k);
if(json2.has("children"))
{
parsejson((JSONArray)json2.get("children"));
}
else
{
System.out.println("File Name "+json2.get("path"));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
String str="{\"path\":\"/test1\" ,\"children\":[{\"path\":\"/test2\"},{\"path\":\"/test3\",\"children\":[{\"path\":\"/test4\",\"children\":[{\"path\":\"/test5\"}]}]}]}";
try {
System.out.println("Complete Json ---------> "+str);
JSONObject json=new JSONObject(str);
JSONArray jarr=(JSONArray)json.get("children");
System.out.println(jarr.length());
for(int i=0;i<jarr.length();i++)
{
JSONObject json1=(JSONObject)jarr.get(i);
System.out.println("Outer loop "+i);
if(json1.has("children"))
{
JSONArray jarr1=(JSONArray)json1.get("children");
for(int j=0;j<jarr1.length();j++)
{
JSONObject json2=(JSONObject)jarr1.get(j);
if(json2.has("children"))
{
parsejson((JSONArray)json2.get("children"));
}
else
{
System.out.println(json2.get("path"));
}
}
}
else
{
System.out.println(json1.get("path"));
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}