2014-07-05 6 views
0

Я пытаюсь отобразить дерево с помощью dhtmlxtreegridJavascript - JSON: построение иерархического дерева

мне нужна помощь с созданием иерархических данных дерева из сплющенной JSON.

Мои данные JSON выглядит следующим образом:

{ 
    "rows": [ 
     { 
      "id": "01", // child id 
      "parentid": "00", // parent Id 
      "data": [ 
       "101831", 
       "Work", 
       "Desc-4-1" 
      ] 
     }, 
     { 
      "id": "02", 
      "parentid": "01", 
      "data": [ 
       "101832", 
       "No Work", 
       "Desc-4-0" 
      ] 
     }, 
     { 
      "id": "03", 
      "parentid": "01", 
      "data": [ 
       "101835", 
       "Work", 
       "Desc-5-0" 
      ] 
     }, 
     { 
      "id": "04", 
      "parentid": "03", 
      "data": [ 
       "101835", 
       "Work", 
       "Desc-5-1" 
      ] 
     } 
    ] 
} 

Результат JSON должен быть в иерархической структуре дерева:

{ 
    "rows": [ 
     { 
      "id": "01", 
      "parentid": "00", 
      "data": [ 
       "101831", 
       "Work", 
       "Desc-4-1" 
      ], 
      "rows": [ 
       { 
        "id": "02", 
        "parentid": "01", 
        "data": [ 
         "101832", 
         "No Work", 
         "Desc-4-0" 
        ] 
       }, 
       { 
        "id": "0", 
        "parentid": "01", 
        "data": [ 
         "101835", 
         "Work", 
         "Desc-5-0" 
        ] 
       } 
      ] 
     } 
    ] 
} 
+0

вы уверены, что ваши данные в формате JSON правильно? – Mritunjay

+0

Да .. это правильный формат – Nambi

+0

И что вы пробовали? – pasty

ответ

-1

Я пытался несколько вещей, которые я получил эту работу, если я понял вашу проблему должным образом ,

Ваш JSON данные: -

var data = { 
"rows": [ 
    { 
     "id": "01", // child id 
     "parentid": "00", // parent Id 
     "data": [ 
      "101831", 
      "Work", 
      "Desc-4-1" 
     ] 
    }, 
    { 
     "id": "02", 
     "parentid": "01", 
     "data": [ 
      "101832", 
      "No Work", 
      "Desc-4-0" 
     ] 
    }, 
    { 
     "id": "03", 
     "parentid": "01", 
     "data": [ 
      "101835", 
      "Work", 
      "Desc-5-0" 
     ] 
    } 
] 
} 

Функции, чтобы изменить структуру.

var addRowsToLastChild = function(obj1,rowsToAppend){ 
//if that object has rows key check in that row otherwise add rows to the object 
    if(obj1["rows"]){ 
     addRowsToLastChild(obj1["rows"][0],rowsToAppend); 
     return; 
    } 
    obj1["rows"] = []; 
    obj1["rows"][0] = rowsToAppend; 
    obj1; 
} 

var resultJSON = data.rows.reduce(function(obj1,obj2){ 
    addRowsToLastChild(obj1,obj2); 
    // object are passed by refference so any changes in obj1 will be affected 
    return obj1; 
},{}); 

Результат будет: -

{ 
"rows": [ 
    { 
     "id": "01", 
     "parentid": "00", 
     "data": [ 
      "101831", 
      "Work", 
      "Desc-4-1" 
     ], 
     "rows": [ 
      { 
       "id": "02", 
       "parentid": "01", 
       "data": [ 
        "101832", 
        "No Work", 
        "Desc-4-0" 
       ], 
       "rows": [{ 
       "id": "03", 
       "parentid": "01", 
       "data": [ 
        "101835", 
        "Work", 
        "Desc-5-0" 
       ] 
      } 
      ] 
      } 

     ] 
    } 
] 
}; 
+0

Большое спасибо Mritunjay ... Можете ли вы поделиться исполняемым кодом? Кажется, что не хватает кода ... – Nambi

+0

не могли бы вы рассказать мне, какую ошибку/проблему вы получили? – Mritunjay

+0

У меня был только этот код и добавил данные JSON в переменные 'data', я добавил это также сейчас. – Mritunjay

0

если вам нужно с # решение здесь ссылка, которая генерирует C# код для вас.

http://json2csharp.com/

в зависимости данных JSON результат здесь C# код:

public class Row2 
{ 
    public string id { get; set; } 
    public string parentid { get; set; } 
    public List<string> data { get; set; } 
} 

public class Row 
{ 
    public string id { get; set; } 
    public string parentid { get; set; } 
    public List<string> data { get; set; } 
    public List<Row2> rows { get; set; } 
} 

public class RootObject 
{ 
    public List<Row> rows { get; set; } 
} 
Смежные вопросы