Creando un árbol usando json de una lista / tabla

Digamos que tengo una tabla / lista como esta n = 3 en este caso, pero n puede ser tan ilimitada.

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

y quiero crear una salida json del árbol padre / hijo como esta usando java. (He estado usando 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}
                        ]
                }

               ]      
        }

¿Cuál sería el código / pasos para hacerlo. He revisado muchas etiquetas, pero la mayoría de las personas están imprimiendo la salida y no crean recursivamente un hashmap / ArrayList para que GSON analice y escriba en la API. En otro punto, cada ID tiene otros datos asociados que deberán incluirse en la salida json. por ejemplo, en lugar de {groupid: 1} necesitaría este {groupid: 1, text = toyota}.

Cualquier ayuda es muy apreciada ya que soy bastante nuevo en Java, ya que provengo de SAS.

Obtengo datos como este (solo una matriz de la lista) Toyota, Gas, Compacto, Corolla

Toyota, Gas, Compacto, CamryToyota, Híbrido, Compacto, PriusHonda, Gas, Compacto, Civic

Si es necesario puedo REFORMAR LOS DATOS en dos tablas

parentId parText answerId

1 Toyota 11 Toyota 21 Toyota 32 Honda 4

answerId nivel answerTextid answerText

1 1 1 gas1 2 2 Compacto1 3 3 Corolla2 1 1 gas2 2 2 Compacto2 3 4 Camry…

Luego, necesito convertirlo en un árbol (la salida anidada como JSON se muestra con los padres / hijos, como si estuvieras creando un directorio del sistema de archivos)

otra cosa que me gustaría hacer es que cada auto tenga un kilometraje como varialbe ({answerid3: 4, text = Corolla, mile = 38}. Pero también si me desplazo hacia arriba en el árbol, otorgue una media de millas para la sucursal. en la sucursal Toyota, Gas, Compacto, el kilometraje sería promedio (Camry, Corolla)

La salida está un poco apagada, estoy buscando algo como esto. si no hay hijos, entonces no hay arrailistas de niños, y attrbutes son parte de un objeto (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"}]}

Respuestas a la pregunta(1)

Su respuesta a la pregunta