-1

我需要遍历下面的 Json 数组并将数据转换为预期的输出。但是,我在循环嵌套数组时遇到了问题。

input : 


   [{"DomainName":"Access Supplier",
   "Data_Category" :
  [{"Data_Category_Name":"System","Data_Category_AssetID":"2"}],
     "Data_Fields":
     [{"Field_Name":"First Name","WID":"7a"},
      {"Field_Name":"Last Name","WID":"213"}]},


  {"DomainName":"Access Talent",
"Data_Category":
  [{"Data_Category_Name":"Talent culture","Data_Category_AssetID":"54c"}],
   "Data_Fields":
  [{"Field_Name":"Key Resp","WID":"de7"},
    {"Field_Name":"Talent","WID":"043b5"}]}]

预期输出:

  [{
"Field_Name": "First Name"
"Data_Category": [
{
 "Data_Category_AssetID": "2"
"Data_Category_Name": "System"
 }
],

"Field_Name":"Last Name"
"Data_Category": [
 {
"Data_Category_AssetID": "2"
"Data_Category_Name": "System"
 }],

 "Field_Name":"Key Resp"
 "Data_Category": [
{
"Data_Category_AssetID": "54c"
 "Data_Category_Name": "Talent culture"
   }],


  "Field_Name":"Talent"
 "Data_Category": [ 
   {
 "Data_Category_AssetID": "54c"
"Data_Category_Name": "Talent culture"
   }]



   }  ]
4

1 回答 1

1

您可以使用submap仅复制您想要的内容Data_Fields (例如仅Field_Name)。Data_Category然后从您的来源分配所有这些新地图 。

import groovy.json.JsonOutput

def data = ["Domain Name": "test", 
            "Data_Category":[["Data_Category_AssetID":"1","Data_Category_Name": "worker1"],
                             ["Data_Category_AssetID":"2","Data_Category_Name": "worker2"]],
            "Data_Fields":  [["WID":"1", "Field_Name":"First Name"],
                             ["WID":"2", "Field_Name":"Last Name"]]]

def allDataFields = data.Data_Fields.collect{
  it.subMap(["Field_Name"]).tap{
    Data_Category = data.Data_Category
  }
}

println(JsonOutput.prettyPrint(JsonOutput.toJson(allDataFields)))
// [
//     {
//         "Field_Name": "First Name",
//         "Data_Category": [
//             {
//                 "Data_Category_AssetID": "1",
//                 "Data_Category_Name": "worker1"
//             },
//             {
//                 "Data_Category_AssetID": "2",
//                 "Data_Category_Name": "worker2"
//             }
//         ]
//     },
//     {
//         "Field_Name": "Last Name",
//         "Data_Category": [
//             {
//                 "Data_Category_AssetID": "1",
//                 "Data_Category_Name": "worker1"
//             },
//             {
//                 "Data_Category_AssetID": "2",
//                 "Data_Category_Name": "worker2"
//             }
//         ]
//     }
// ]
于 2021-01-01T20:26:04.347 回答