Java решение для преобразования данных в формат дерева родительского, дочернего, грандиозного дочернего, как указано ниже - PullRequest
0 голосов
/ 03 августа 2020

В настоящее время я извлекаю данные своей структуры папок, как указано ниже.

{
{
"parent": "TestParent1"
"Child" : "TestSub1"
"GrnadChild":"TestGrandChild1"
}, 
{
  "parent": "TestParent1"
  "Child" : "TestSub1"
  "GrnadChild":"TestGrandChild2"
},
{
  "parent": "TestParent1"
  "Child" : "TestSub2"
  "GrnadChild":"TestGrandChild3"
  },
{
 "parent": "TestParent1"
 "Child" : "TestSub2"
 "GrnadChild":"TestGrandChild4"
}
}

У меня есть родительская папка, состоящая из 2 подпапок, и каждая подпапка состоит из двух больших папок. Мне нужно, чтобы данные были представлены в формате json ниже.

 {
  "parent": "TestParent1",
  {
   "Child" : "TestSub1"
     {
      "GrnadChild" :
       {
        "TestGrandChild1",
        "TestGrandChild2"
       }
     },
   "Child" : "TestSub2"
     {
      "GrnadChild" :
      {
        "TestGrandChild3",
        "TestGrandChild4"
      }
    }
 },
"parent": "TestParent2",
 {
  "Child" : "TestSub3"
   {
    "GrnadChild" :
     {
       "TestGrandChild5",                                                              
       "TestGrandChild6"
     }
   },
   "Child" : "TestSub4"
   {
    "GrnadChild" :
    {
     "TestGrandChild7",                                                              
     "TestGrandChild8"
    }
   }
  }
  }

Пожалуйста, помогите мне записать java logi c и цените вашу помощь.

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вот код для реализации. Вам нужно добавить json -simple jar в свою библиотеку

    JSONArray grandchild = new JSONArray();
    JSONArray child = new JSONArray();
    JSONArray parent = new JSONArray();
    
    grandchild.add("GC1");
    grandchild.add("GC1");
    
    child.add("C1");
    JSONObject obj = new JSONObject();
    obj.put("GC", grandchild);
    child.add(obj);
    
    parent.add("P");
    obj = new JSONObject();
    obj.put("C", child);
    parent.add(obj);
    

    System.out.println(parent);

Сгенерированный результат будет выглядеть так:

["P",{"C":["C1",{"GC":["GC1","GC1"]}]}]
0 голосов
/ 03 августа 2020
  1. Сериализовать JSON в объект

    String json;
    FolderStruc original = new ObjectMapper()
       .readerFor(FolderStruc.class)
       .readValue(json);
    
  2. Преобразовать в желаемую модель объекта

    DesiredStruc desired = new DesiredStruc(original);
    
  3. Десериализовать объект в JSON

    String json = new ObjectMapper().writeValueAsString(desired);
    

Если у вас возникли проблемы с правильным сопоставлением вашей модели с желаемым выходом, попробуйте следующие аннотации:

https://www.baeldung.com/jackson-annotations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...