Tworzenie drzewa za pomocą json z listy / tabeli

Powiedzmy, że mam w tym przypadku tabelę / listę n = 3, ale n może być tak nieograniczona.

groupid       answerid1     answerid2     answerid(n)
1              3            6             8 
1              3            6             9 
1              4            7               
2              5                            

i chcę utworzyć wyjście json z drzewa nadrzędnego / podrzędnego w taki sposób, używając java. (Używam GSON)

    {
        data: [
            {
                groupid: 1,
                children: [
                    {
                        answerid1: 1,
                        children: [
                            {
                                answerid2:3,
                                children: [
                                           {
                                    answerid3:6,
                                                  children: [
                                                              {answerid4: 8},
                                  {answerid4: 9} 
                                                             ]
                                              } 


                            }, {
                                 answerid2: 4,
                                 children: [
                                          {answerid3:7} 
                                   ]
                                 }
                                ]         
                    }, 

               {
                 groupid1: 2,
                 children: [
                       { answerid2: 5}
                        ]
                }

               ]      
        }

jaki byłby kod / kroki, aby to zrobić. przeglądałem wiele tagów, ale większość ludzi drukuje dane wyjściowe i nie rekursywnie buduje hashap / ArrayList dla GSON do analizowania i zapisu do API. jeszcze jeden punkt, w którym każdy identyfikator ma inne powiązane dane, które będą musiały zostać uwzględnione w danych wyjściowych json. na przykład zamiast {groupid: 1} będzie potrzebował tego {groupid: 1, text = toyota}.

każda pomoc jest bardzo mile widziana, ponieważ jestem dość nowy w Javie, ponieważ pochodzę z SAS.

Dostaję dane takie jak ta (tylko matryca listy) Toyota, Gas, Compact, Corolla

Toyota, Gas, Compact, CamryToyota, Hybrid, Compact, PriusHonda, Gas, Compact, Civic

W razie potrzeby mogę zmienić dane w dwie tabele

parentId parText answerId

1 Toyota 11 Toyota 21 Toyota 32 Honda 4

answerId level answerTextid answerText

1 1 1 Gaz1 2 2 Kompaktowy1 3 3 Corolla2 1 1 Gaz2 2 2 Kompaktowy2 3 4 Camry…

Następnie muszę zrobić z niego drzewo (zagnieżdżone wyjście, jak pokazuje JSON z rodzicem / dziećmi - tak jak gdybyś tworzył katalog systemu plików)

jeszcze jeden znak, który chciałbym zrobić dla każdego samochodu ma przebieg jako varialbe ({answerid3: 4, tekst = Corolla, przebieg = 38}. Ale także, gdy przemierzam drzewo, podaj średnią długość gałęzi. w oddziale Toyota, Gas, Compact przebieg byłby średni (Camry, Corolla)

wyjście jest trochę wyłączone, szukam czegoś takiego. jeśli nie ma dzieci, nie ma dzieci arraylist i attrbuty są częścią jednego obiektu (hashmap)

{"data":[{"id":1,"children":
    [{"id": 2,"children":
        [{"id": 3 ,"children":
            [{"id": 4,"name":"Prius"}],"name":"Compact"}],"name":"Hybrid"},
    {"id":5,"children":
        [{"id":3,"children":
            [{"id":7,"MPG":38, "name":"Corolla"},
             {"id":8,"MPG":28,"name":"Camry"}],"name":"Compact"}],"name":"Gas"}],"name":"Toyota"},
{"id":9, "children":
    [{"id":10,"children":
        [{"id":3 ,"children":
            [{"id":11 ,"name":"Civic"}],"name":"Compact"}],"name":"Gas"}],"name":"Honda"}]}

questionAnswers(1)

yourAnswerToTheQuestion