Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Groovy中转置JSON_Groovy - Fatal编程技术网

在Groovy中转置JSON

在Groovy中转置JSON,groovy,Groovy,我有一个JSON: { "range": "'All traffic", "majorDimension": "ROWS", "values": [ [ "Date", "Sessions", "Leeds",

我有一个JSON:

{
    "range": "'All traffic",
    "majorDimension": "ROWS",
    "values": [
        [
            "Date",
            "Sessions",
            "Leeds",
            "Сontact_query",
            "wo_Сontact_query"
        ],
        [
            "20200107",
            "3461",
            "15",
            "0",
            "15"
        ],
        [
            "20200115",
            "7824",
            "43",
            "0",
            "43"
        ]
    ]
}

索引为[0]的值数组中的元素是JSON属性的名称。我想用索引[0+]开始的值映射这些名称。每个索引的值数可以不同。映射应该是动态的,没有硬索引

我想获得以下JSON:

[
  {
    "Date": "20200107",
    "Sessions": "3461",
    "Leeds": "15",
    "Contact_query": "0",
    "wo_Contact_query": "15"
  },
  {
    "Date": "20200115",
    "Sessions": "7824",
    "Leeds": "43",
    "Contact_query": "0",
    "wo_Contact_query": "43"
  }
] 
我用一种奇怪的震动配置成功地做到了:

[
  {
    "operation": "shift",
    "spec": {
      "values": {
        "0": null,
        "*": {
          "*": "[&1].@(2,[0].[&])"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "0": null,
      "*": "[]"
    }
  }
]
但我想用Groovy脚本替换它

我达成了以下解决方案:

def slurped = new JsonSlurper().parseText(text)

def val = slurped.values[0]

def json = slurped.values.collect{
  [val, it].transpose().collectEntries() 
}
但它也会返回[0]元素的值,我应该跳过哪个元素:

{
  "Date":"Date",
  "Sessions":"Sessions",
  "Leeds":"Leeds",
  "Contact_query":"Contact_query",
  "wo_Contact_query":"wo_Contact_query"
}
如何改进解决方案?

您可以使用pop删除集合的第一个值:

def values = new groovy.json.JsonSlurper().parseText(text).values;
def val = values.pop()
def json = values.collect { [val, it].transpose().collectEntries()  }
可以使用pop删除集合的第一个值:

def values = new groovy.json.JsonSlurper().parseText(text).values;
def val = values.pop()
def json = values.collect { [val, it].transpose().collectEntries()  }
使用和的另一个选项:

使用和的另一个选项: