ДАН ответ
Код: Выделить всё
{
"ControllingArea" : "TZUS",
"TopNodes" : false,
"Language" : "EN",
"TONODES" : [
{
"Groupname" : "INC",
"Hierlevel" : 0,
"Valcount" : 0,
"Descript" : "INC"
},
{
"Groupname" : "INC-BBSR",
"Hierlevel" : 1,
"Valcount" : 0,
"Descript" : "INC1"
},
{
"Groupname" : "INC-STPI",
"Hierlevel" : 2,
"Valcount" : 0,
"Descript" : "INC2"
},
{
"Groupname" : "INC-FORT",
"Hierlevel" : 2,
"Valcount" : 0,
"Descript" : "INC3"
},
{
"Groupname" : "INC-BBL",
"Hierlevel" : 1,
"Valcount" : 0,
"Descript" : "INC4"
},
{
"Groupname" : "INC-PUNE",
"Hierlevel" : 1,
"Valcount" : 0,
"Descript" : "INC5"
}
],
"TOVALUE" : [
{
"Valfrom" : "",
"Valto" : ""
}
]
}
изображение дерева
Ответ, который я хочу отправить, должен выглядеть так:
Код: Выделить всё
{
"INC": {
"Groupname": "INC",
"Hierlevel": 0,
"Valcount": 0,
"Descript": "INC",
"INC-BBSR": {
"Groupname": "INC-BBSR",
"Hierlevel": 1,
"Valcount": 0,
"Descript": "INC1",
"INC-STPI": {
"Groupname": "INC-STPI",
"Hierlevel": 2,
"Valcount": 0,
"Descript": "INC2"
},
"INC-FORT": {
"Groupname": "INC-FORT",
"Hierlevel": 2,
"Valcount": 0,
"Descript": "INC3"
}
},
"INC-BBL": {
"Groupname": "INC-BBL",
"Hierlevel": 1,
"Valcount": 0,
"Descript": "INC4"
},
"INC-PUNE": {
"Groupname": "INC-PUNE",
"Hierlevel": 1,
"Valcount": 0,
"Descript": "INC5"
}
}
}
Я также пробовал использовать стек для вставки узлов к нему, если приближается более высокий уровень иерархии объекта, и pop, если приближается более низкий уровень иерархии объекта.
Код: Выделить всё
@Override
public ResponseDTO getTreeStructure(JSONObject sapResponse) {
JSONObject response = new JSONObject();
Stack treeStack = new Stack();
JSONArray iteratingArray = sapResponse.getJSONArray("TONODES");
for(int i = 0 ; i < iteratingArray.length(); i++){
JSONObject tempObject= iteratingArray.getJSONObject(i);
if(treeStack.empty()) {
treeStack.push(tempObject);
response.put(tempObject.getString("Groupname"), tempObject);
}else if(treeStack.peek().getInt("Hierlevel") < tempObject.getInt("Hierlevel")){
response.getJSONObject(treeStack.peek().getString("Groupname")).put(tempObject.getString("Groupname"), tempObject);
treeStack.push(tempObject);
}else if(treeStack.peek().getInt("Hierlevel") >= tempObject.getInt("Hierlevel")){
while(!treeStack.empty() && treeStack.peek().getInt("Hierlevel") >= tempObject.getInt("Hierlevel")){
treeStack.pop();
}
response.getJSONObject(treeStack.peek().getString("Groupname")).put(tempObject.getString("Groupname"), tempObject);
treeStack.push(tempObject);
}
}
return new ResponseDTO(200, "ok", response);
//return null;
}
Код: Выделить всё
response.getJSONObject(N0).getJSONObjectI(N1).put(N2.getString("Groupname"), N2);
Код: Выделить всё
response.getJSONObject(N1).put(N2)
Я могу получить узел 1 из вершины стека, но не могу отследить родительский 0-й узел, чтобы поместить 2-й объект под 1-й.
Я могу получить узел 1 из вершины стека, но не могу отследить родительский 0-й узел, чтобы поместить 2-й объект под 1-й.
Я могу получить узел 1 из вершины стека, но я не могу отследить родительский 0-й узел, чтобы поместить 2-й объект под 1-й.
Я могу получить узел 1 из вершины стека, но не могу отследить родительский 0-й узел, чтобы поместить 2-й объект под 1-й. Strong>
Если каким-то образом можно получить предыдущие узлы в соответствии с иерархией, я смогу составить дерево.
Пожалуйста, исправьте мои код или сообщите мне лучший подход к решению этой проблемы.
Подробнее здесь: https://stackoverflow.com/questions/783 ... archy-leve