我有一個JSONObject,它可能具有相同類型的子JSONArray。我想遍歷它,找到我需要的元素並保存父元素的鏈(例如,找到的元素是此元素的子元素,此元素是下一個元素的子元素,下一個元素是根元素的子元素)。樹結構:找到父元素的元素並保存鏈的最佳方法
目前這裏是我的幼稚的做法:
private boolean found;
private void searchNode(List<JSONObject> chain,
JSONObject rootNode, JSONObject desiredFrame) {
if (found)
return;
JSONArray children = rootNode.getJSONArray("frames");
chain.add(rootNode);
for (int i = 0; i < children.length(); i++) {
JSONObject currentNode = children.getJSONObject(i);
if (currentNode.equals(desiredNode)) {
found = true;
chain.add(currentNode);
return;
}
searchNode(chain, currentNode, desiredNode);
if (!found)
chain.remove(currentNode);
}
我可以看到什麼樣的問題:
- 我不知道它會工作得很好:)
- 此實現不明顯,這不是乾淨的代碼。
- 我使用類領域,大概我能避免使用
可將這種結構稱爲樹,但是這個人是不是二進制文件。
你能提供的JSON看起來像你想從提取正是一個實例和? – schrej
我認爲這個實現是很好的:深度優先搜索 – Th0rndike