当前位置: 首页 > 知识库问答 >
问题:

用groovy获取JsonSlurper属性

杜浩壤
2023-03-14

我有一个像这样的Json文件:

{
  "type" : "record",
  "name" : "test",
  "fields" : [ {
    "name" : "y",
    "type" : {
      "type" : "array",
      "items" : "double"
    },
    "doc" : "Type inferred from '[1.0,0.9766205557100867,0.907575419670957,0.7960930657056438,0.6473862847818277,0.46840844069979015,0.26752833852922075,0.05413890858541761,-0.16178199655276473,-0.37013815533991445,-0.5611870653623823,-0.7259954919231308,-0.8568571761675893,-0.9476531711828025,-0.9941379571543596,-0.9941379571543596,-0.9476531711828025,-0.8568571761675892,-0.7259954919231307,-0.5611870653623825,-0.37013815533991445,-0.16178199655276476,0.05413890858541758,0.267528338529221,0.4684084406997903,0.6473862847818279,0.796093065705644,0.9075754196709569,0.9766205557100867,1.0]'"
  }, {
    "name" : "x",
    "type" : {
      "type" : "array",
      "items" : "double"
    },
    "doc" : "Type inferred from '[0.0,0.21666156231653746,0.43332312463307493,0.6499846869496124,0.8666462492661499,1.0833078115826873,1.2999693738992248,1.5166309362157622,1.7332924985322997,1.9499540608488373,2.1666156231653746,2.383277185481912,2.5999387477984497,2.8166003101149872,3.0332618724315243,3.249923434748062,3.4665849970645994,3.683246559381137,3.8999081216976745,4.116569684014212,4.333231246330749,4.549892808647287,4.766554370963824,4.983215933280362,5.199877495596899,5.416539057913437,5.6332006202299745,5.849862182546511,6.066523744863049,6.283185307179586]'"
  } ]
}

我想从这个文件创建一个sql查询。所以我写了这个代码

def schema= new JsonSlurper().parseText(myAttr)
//build create table statement
def createTable = "create table if not exists ${schema.name} (" +
    schema.fields.collectMany{ "\n  ${it.name.padRight(39)} ${typeMap[it.type.collectMany{it.items}]}" }.join(',') +
    "\n)"

但我认为我没有正确地访问值项。有人能帮帮我吗

共有1个答案

宰鸿博
2023-03-14

好的,猜测<code>类型映射

def typeMap = [
    double: 'DOUBLE'
]

您可以将代码更改为:

String createTable = """create table if not exists ${schema.name} (
                       |${schema.fields.collect { "  ${it.name.padRight(39)} ${typeMap[it.type.items]}" }.join(',\n')}
                       |)""".stripMargin()
 类似资料:
  • 我有一个方法可以返回相当嵌套的JSON,比如: 当我尝试使用< code>JsonSlurper将这个JSON slurp到< code>def result中时,我得到了异常: 当<code>parseText</code>执行时产生引发的异常: 有什么办法吗?

  • 我希望这对于“批准”和“阿普罗达”都是真的,但这不起作用: 谢谢

  • 我的Groovy脚本连接到bitBuck API并获取分支详细信息。这是脚本: 但这抛出以下错误: 但是当我在浏览器上复制粘贴URL时,我能够看到JSON数据。如何使用Groovy从此URL获取JSON数据?

  • 我向一个服务发出API请求,该服务在主体中返回一个JSON对象。 我似乎无法在groovy中获得名为“properties”的键的值。 每次我调用我得到以下内容 但是如果我只调用,就会得到预期的JSON对象 同样,如果I我得到这只是当我我是否得到上述响应

  • 我使用的是免费(非专业)SoapUI 5.0,我在测试套件中有一个属性列表。然后,我有许多测试步骤,每个步骤与测试套件属性具有相同的名称。 我试图在测试步骤属性中编写Groovy脚本,以检索同名的测试套件属性的值。 例如: 测试套件的属性颜色为\u红色,值为12345 到目前为止,我在“info”属性值中拥有什么: 我不确定我是否需要新的GroovyShell()。评估位,但没有它仍然不起作用。我

  • 我正在尝试验证Nexus Sonatype配置。我从这里发现了Groovy脚本: https://github . com/savoirfairelinux/ansi ble-nexus 3-OSS/tree/master/templates/groovy 我能够在Nexus Sonatype中配置LDAP,甚至创建一个新角色(不是从LDAP)。但现在我正在搜索如何获取LDAP用户,然后将他们放在