Scala - Разделить вложенный файл json на несколько файлов json вместе с его деревом отношений - PullRequest
0 голосов
/ 18 февраля 2020

INPUT JSON:

{
   "Start":{
      "HInfo":{
         "HInfoID":"ABCD1234",
         "SUType":"OnStup",
         "SModel":"Test",
         "Hostname":"Dummy",
         "SType":"Laptop",
         "Monitor":{
            "HInfoID":"ABCD1234",
            "Index":0,
            "Type":"Lenovo",
            "VSData":"XYZVN"
         },
         "OS":"MSW-07",
         "LRTime":"2017-05-04",
         "Cables":[
            {
               "HInfoID":"ABCD1234",
               "Index":0,
               "Name":"LC",
               "Status":"Installed"
            },
            {
               "HInfoID":"ABCD1234",
               "Index":1,
               "Name":"WLSwitch",
               "Status":"Off"
            },
            {
               "HInfoID":"ABCD1234",
               "Index":2,
               "Name":"WLAN",
               "Status":"Installed"
            }
         ],
         "NFan":{
            "HInfoID":"ABCD1234",
            "Index":0
         },
         "Disk":[
            {
               "HInfoID":"ABCD1234",
               "Index":0,
               "Name":"DISK0",
               "MKMdl":"THB",
               "BW_MB":694,
               "Partition":[
                  {
                     "HInfoID":"6ABCD1234",
                     "DGID":"ABCD1234",
                     "Index":0,
                     "Name":"Not Used",
                     "SM":500
                  },
                  {
                     "HInfoID":"ABCD1234",
                     "DGID":"ABCD1234",
                     "Index":1,
                     "Name":"C:",
                     "SM":476438
                  }
               ]
            },
            {
               "HInfoID":"ABCD1234",
               "Index":1,
               "Name":"DISK1",
               "MKMdl":"JFlsh",
               "BW_MB":0,
               "Partition":{
                  "HInfoID":"ABCD1234",
                  "DGID":"ABCD1234",
                  "Index":0,
                  "Name":"E:",
                  "SM":7727
               }
            }
         ]
      }
   }
}

Ожидаемый вывод JSON Файлы:

  1. {"obj_class": "HInfo", "obj_instance": " HInfo "," ratio_tree ":" Start.HInfo "," HInfo ": {" HInfoID ":" ABCD1234 "," SUType ":" OnStup "," SModel ":" Test "," Hostname ":" Dummy ", "SType": "Laptop", "OS": "MSW-07", "LRTime": "2017-05-04"}}

  2. {"obj_class": "Monitor "," obj_instance ":" Monitor-1 "," Relations_tree ":" Start.HInfo.Monitor.Monitor-1 ", // Этот Monitor-1 указывает, что Monitor имеет только 1 экземпляр" Monitor ": {" HInfoID ": "ABCD1234", "Index": "0", "Type": "Lenovo", "VSData": "XYZVN"}}

  3. {"obj_class": "Cables", "obj_instance": "Cables-1", "ratio_tree": "Start.HInfo.Cables.Cables-1",
    "Cables": {"HInfoID": "ABCD1234", "Index": "0", "Имя": "L C", "Статус": "Установлено"}}

  4. {"obj_class": "Кабели", "obj_instance": "Кабели-2" , "lation_tree ":" Start.HInfo.Cables.Cables-2 ",
    " Кабели ": {" HInfoID ":" ABCD1234 "," Индекс ":" 1 "," Имя ":" WLSwitch " "," Status ":" Off "}}

  5. {" obj_class ":" Cables "," obj_instance ":" Cables-3 "," ratio_tree ":" Start.HInfo .Cables.Cables-3 ",
    " Кабели ": {" HInfoID ":" ABCD1234 "," Индекс ":" 2 "," Имя ":" WLAN "," Статус ":" Установлено "}}

  6. {"obj_class": "NFan", "obj_instance": "NFan-1", "ratio_tree": "Start.HInfo.NFan.NFan-1",
    " NFan ": {" HInfoID ":" ABCD1234 "," Index ":" 0 "}}

  7. {" obj_class ":" Disk "," obj_instance ":" Disk-1 "," ratio_tree ":" Start.HInfo.Disk.Disk-1 ",
    " Диск ": {" HInfoID ":" ABCD1234 "," Index ": 0," Имя ":" DISK0 "," MKMdl ":" THB "," BW_MB ": 694}}

  8. {" obj_class ":" Partition "," obj_instance ":" Partition-1 "," ratio_tree ":" Start .HInfo.Disk.Disk-1.Partition.Partition-1 "," Partition ": {" HInfoID ":" ABCD1234 "," DGID ":" ABCD1234 "," Index ": 0," Name ":" Не используется "," SM ": 500}}

  9. {" obj_class ":" Partition "," obj_instance ":" Partition-2 "," Relations_tree ":" Start.HInfo.Disk .Disk-1.Partition.Partition-2" , * 1 045 * "Раздел": {"HInfoID": "ABCD1234", "DGID": "ABCD1234", "Индекс": 1, "Имя": "C:", "SM": 476438}}

  10. {"obj_class": "Диск", "obj_instance": "Диск-2", "Relations_tree": "Start.HInfo.Disk.Disk-2", "Диск": {" HInfoID ":" ABCD1234 "," Index ": 1," Name ":" DISK1 "," MKMdl ":" JFl sh "," BW_MB ": 0}}

  11. {"obj_class": "Partition", "obj_instance": "Partition-1", "Relations_tree": "Start.HInfo.Disk.Disk-2.Partition.Partition-1", "Partition": {"HInfoID" : "ABCD1234", "DGID": "ABCD1234", "Index": 0, "Name": "E:", "SM": 7727}}

Есть ли универсальный c способ разбить вложенный файл json на несколько json вместе с его деревом отношений в первой строке (без жесткого кодирования узла / тега) с использованием Scala? Мгновенная помощь или предложение приветствуется.

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