如何在groovy中从字符串获取密钥集?
我在Groovy中有以下字符串:如何在groovy中从字符串获取密钥集?,groovy,Groovy,我在Groovy中有以下字符串: [[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}], [{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]] 我只需要“qunit”和“utest”两个键 怎么可能呢?您可以解析该JSON字符串,然后阅读列表: def p = new JsonSlurper() def list = p.parseText("""[[{"
[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}], [{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]
我只需要“qunit”和“utest”两个键
怎么可能呢?您可以解析该JSON字符串,然后阅读列表:
def p = new JsonSlurper()
def list =
p.parseText("""[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}],
[{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]""")
def keys = list.flatten().collect{it.keySet()}.flatten()
list.flatten()
list.flatten()*.keySet()
结果是[qunit,utest]
这显然是特定于输入布局的。您可以解析该JSON字符串,然后读取列表:
def p = new JsonSlurper()
def list =
p.parseText("""[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}],
[{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]""")
def keys = list.flatten().collect{it.keySet()}.flatten()
list.flatten()
list.flatten()*.keySet()
结果是[qunit,utest]
这显然是特定于输入布局的。您的字符串表示一个JSON文档,因此您需要首先使用
JsonSlurper
对其进行解析:
import groovy.json.JsonSlurper
final String json = '[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}], [{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]'
def list = new JsonSlurper().parseText(json)
如果打印列表
变量,您将看到如下内容:
[[[qunit:[total:0, passed:0, failed:0, skipped:0]]], [[utest:[total:0, passed:0, failed:0, skipped:0]]]]
首先,我们需要将列表展平:
def p = new JsonSlurper()
def list =
p.parseText("""[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}],
[{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]""")
def keys = list.flatten().collect{it.keySet()}.flatten()
list.flatten()
list.flatten()*.keySet()
返回如下列表:
[[qunit:[total:0, passed:0, failed:0, skipped:0]], [utest:[total:0, passed:0, failed:0, skipped:0]]]
[qunit, utest]
平铺初始列表将生成列表
。我们可以使用扩展运算符*
对列表中存储的每个映射执行keySet()
方法:
def p = new JsonSlurper()
def list =
p.parseText("""[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}],
[{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]""")
def keys = list.flatten().collect{it.keySet()}.flatten()
list.flatten()
list.flatten()*.keySet()
这部分代码生成一个list
类型的列表,如:
[[qunit], [utest]]
最后,我们可以通过最后调用flant()
将其转换为List
,如下所示:
list.flatten()*.keySet().flatten()
应用最后一个操作后,我们得到如下列表:
[[qunit:[total:0, passed:0, failed:0, skipped:0]], [utest:[total:0, passed:0, failed:0, skipped:0]]]
[qunit, utest]
下面是一个完整的例子:
import groovy.json.JsonSlurper
final String json = '[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}], [{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]'
def list = new JsonSlurper().parseText(json)
def keys = list.flatten()*.keySet().flatten()
assert keys == ['qunit', 'utest']
您的字符串表示一个JSON文档,因此需要首先使用
JsonSlurper
对其进行解析:
import groovy.json.JsonSlurper
final String json = '[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}], [{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]'
def list = new JsonSlurper().parseText(json)
如果打印列表
变量,您将看到如下内容:
[[[qunit:[total:0, passed:0, failed:0, skipped:0]]], [[utest:[total:0, passed:0, failed:0, skipped:0]]]]
首先,我们需要将列表展平:
def p = new JsonSlurper()
def list =
p.parseText("""[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}],
[{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]""")
def keys = list.flatten().collect{it.keySet()}.flatten()
list.flatten()
list.flatten()*.keySet()
返回如下列表:
[[qunit:[total:0, passed:0, failed:0, skipped:0]], [utest:[total:0, passed:0, failed:0, skipped:0]]]
[qunit, utest]
平铺初始列表将生成列表
。我们可以使用扩展运算符*
对列表中存储的每个映射执行keySet()
方法:
def p = new JsonSlurper()
def list =
p.parseText("""[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}],
[{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]""")
def keys = list.flatten().collect{it.keySet()}.flatten()
list.flatten()
list.flatten()*.keySet()
这部分代码生成一个list
类型的列表,如:
[[qunit], [utest]]
最后,我们可以通过最后调用flant()
将其转换为List
,如下所示:
list.flatten()*.keySet().flatten()
应用最后一个操作后,我们得到如下列表:
[[qunit:[total:0, passed:0, failed:0, skipped:0]], [utest:[total:0, passed:0, failed:0, skipped:0]]]
[qunit, utest]
下面是一个完整的例子:
import groovy.json.JsonSlurper
final String json = '[[{"qunit":{"total":0,"passed":0,"failed":0,"skipped":0}}], [{"utest": {"total":0,"passed":0,"failed":0,"skipped":0}}]]'
def list = new JsonSlurper().parseText(json)
def keys = list.flatten()*.keySet().flatten()
assert keys == ['qunit', 'utest']