static String a = "{\n"
" \"name\": \"Praveen\",\n"
" \"address\": \"Avadi\",\n"
" \"Place\": \"Chennai\",\n"
" \"Friends\": [{\n"
" \"name\": \"kumaresh\",\n"
" \"address\": \"paruthipetu\",\n"
" \"Place\": [\"Chennai\", \"Mumbai\"],\n"
" \"Friends\": {\n"
" \"name1\": \"Midhun\",\n"
" \"name2\": \"vicky\"\n"
" }\n"
" },{\n"
" \"hair\": \"black\"\n"
" }],\n"
" \"number\": {\n"
" \"homeNo\": false,\n"
" \"phoneNo\": 8926363636\n"
" },\n"
" \"age\": 24,\n"
" \"age1\": 26\n"
"}";
public static ArrayList<Object> extractKeysValues(String test, String parentKey) throws Exception {
ArrayList<Object> arraylist = new ArrayList<Object>();
if(test.charAt(0)=='{') {
//object
JSONObject json_object = new JSONObject(test);
Iterator<String> keys = json_object.keys();
while(keys.hasNext()) {
String key = keys.next();
arraylist.add(key);
arraylist.add(json_object.get(key));
arraylist.add(parentKey);
if(json_object.get(key) instanceof JSONObject || json_object.get(key) instanceof JSONArray) {
arraylist.addAll(extractKeysValues(json_object.get(key).toString(),key));
}
}
} else if(test.charAt(0)=='[') {
//array
JSONArray json_array = new JSONArray(test);
int json_array_length = json_array.length();
for(int i=0;i<json_array_length;i ) {
String key = json_array.get(i).toString();
arraylist.add(String.valueOf(i));
arraylist.add(key);
arraylist.add(parentKey);
if(json_array.get(i) instanceof JSONObject || json_array.get(i) instanceof JSONArray) {
arraylist.addAll(extractKeysValues(json_array.get(i).toString(),String.valueOf(i)));
}
}
}
return arraylist;
}
System.out.println(extractKeysValues(a,"root"));
OUTPUT:
[number, {"homeNo":false,"phoneNo":8926363636}, root, homeNo, false, number, phoneNo, 8926363636, number, address, Avadi, root, Friends, [{"address":"paruthipetu","Friends":{"name2":"vicky","name1":"Midhun"},"name":"kumaresh","Place":["Chennai","Mumbai"]},{"hair":"black"}], root, 0, {"address":"paruthipetu","Friends":{"name2":"vicky","name1":"Midhun"},"name":"kumaresh","Place":["Chennai","Mumbai"]}, Friends, address, paruthipetu, 0, Friends, {"name2":"vicky","name1":"Midhun"}, 0, name2, vicky, Friends, name1, Midhun, Friends, name, kumaresh, 0, Place, ["Chennai","Mumbai"], 0, 0, Chennai, Place, 1, Mumbai, Place, 1, {"hair":"black"}, Friends, hair, black, 1, name, Praveen, root, Place, Chennai, root, age, 24, root, age1, 26, root]
EXPECTED OUTPUT:
[name, Praveen, root, address, Avadi, root, Place, Chennai, root, Friends,[{name:'kumaresh',address: 'paruthipetu',Place: ["Chennai","Mumbai"], Friends: {"name1":"Midhun","name2":"vicky"}},{ hair: 'black' }], root, 0,{name: 'kumaresh', address: 'paruthipetu', Place: [ 'Chennai', 'Mumbai' ], Friends: { name1: 'Midhun', name2: 'vicky' }}, Friends, name, kumaresh, 0, address, paruthipetu, 0, Place,[ 'Chennai', 'Mumbai' ], 0, 0, Chennai, Place, 1, Mumbai, Place, Friends, { name1: 'Midhun', name2: 'vicky' }, 0, name1, Midhun, Friends, name2, vicky, Friends, 1, { hair: 'black' }, Friends, hair, black, 1, number, { homeNo: false, phoneNo: 8926363636 }, root, homeNo, false, number, phoneNo, 8926363636, number, age, 24, root, age1, 26, root]
有人可以幫我實作預期的輸出嗎?
我在這段代碼中想要實作的是,需要遍歷任何陣列或物件才能使用 java. 存盤在格式鍵、值、父鍵中的值。
我使用遞回來解決這個問題。沒有遞回的解決方案也非常受歡迎。
uj5u.com熱心網友回復:
關于以“給定順序”進行迭代:
JSON 物件本質上是無序的,因此您正在嘗試一些無法完成的事情。只有 JSON 陣列是有序的。
"{ ... }" 中的物件在 Java 中表示為從鍵到值的映射,原始順序和迭代映射鍵之間沒有關系。
結果是,一個期望通過 JSON 來回保持鍵順序的程式是沒有根據的。
關于遞回:
由于一個物件可以包含陣列,而一個陣列可以包含物件,遞回方法是最簡單、最清晰的撰寫方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490545.html
上一篇:遞回函式查找矩陣中數字的位置
