Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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对象_Json_Groovy - Fatal编程技术网

在groovy中解析嵌套的json对象

在groovy中解析嵌套的json对象,json,groovy,Json,Groovy,我有一个json文件,其中包含按城市分组的联系人信息。我想解析json并创建一个名称和数字列表,但在摆弄了一个小时左右之后,我无法在groovy中使用它 def ​json = '''{ "date":"2018-01-04T22:01:02.2125", "boston": [ { "name":"bob", "phone":"242 123123", "ext":"12", "email":"bob@boston.com"

我有一个json文件,其中包含按城市分组的联系人信息。我想解析json并创建一个名称和数字列表,但在摆弄了一个小时左右之后,我无法在groovy中使用它

def ​json = '''{
  "date":"2018-01-04T22:01:02.2125",
  "boston": [
    {
      "name":"bob",
      "phone":"242 123123",
      "ext":"12",
      "email":"bob@boston.com"
    },
    {
      "name":"alice",
      "phone":"212-123-345",
      "ext":"1",
      "email":"alice@boston.com"
    }
  ],
  "chicago": [
    {
      "name":"charlie",
      "phone":"313-232-545",
      "ext":"14",
      "email":"charlie@chicago.com"
    },
    {
      "name":"denise",
      "phone":"414-123-546",
      "ext":"9",
      "email":"denise@chicago.com"
    }
  ]
}'''
我尝试了以下主题的一些变体,但到目前为止都失败了

parsedjson = slurper.parseText(json)
phonelist = []
parsedjson.each{phonelist.add([it['name'],it['phone']])}

使用json很棘手,因为您需要查找列表中的值。。。您可以使用
findAll
实现这一点,因此给定json:


def ​json = '''{
  "date":"2018-01-04T22:01:02.2125",
  "boston": [
    {
      "name":"bob",
      "phone":"242 123123",
      "ext":"12",
      "email":"bob@boston.com"
    },
    {
      "name":"alice",
      "phone":"212-123-345",
      "ext":"1",
      "email":"alice@boston.com"
    }
  ],
  "chicago": [
    {
      "name":"charlie",
      "phone":"313-232-545",
      "ext":"14",
      "email":"charlie@chicago.com"
    },
    {
      "name":"denise",
      "phone":"414-123-546",
      "ext":"9",
      "email":"denise@chicago.com"
    }
  ]
}'''
您可以导入JsonSlurper并像当前一样解析json:

import groovy.json.JsonSlurper

def parsedjson = new JsonSlurper().parseText(json)
然后,


明亮的非常感谢。我在我的问题中添加了你的漂亮json,你介意从你的答案中删除它吗?只是为了让答案在howdoi和helpmecode中看起来更好。干杯!
def result = ​parsedjson.findAll { it.value instanceof List } // Find all entries with a list value
          .values()                                          // Get all the lists
          .flatten()                                         // Merge them into a single list
          .collect { [it.name, it.phone] }     ​​​​​              // grab the name and phone for each