首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用groovy获取JsonSlurper属性

使用groovy获取JsonSlurper属性
EN

Stack Overflow用户
提问于 2018-03-28 12:33:02
回答 1查看 320关注 0票数 0

我有这样的Json档案:

代码语言:javascript
复制
{
  "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查询。所以我写了这段代码

代码语言:javascript
复制
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)"

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-28 14:30:07

好吧,猜测typeMap类似于:

代码语言:javascript
复制
def typeMap = [
    double: 'DOUBLE'
]

您可以将代码更改为:

代码语言:javascript
复制
String createTable = """create table if not exists ${schema.name} (
                       |${schema.fields.collect { "  ${it.name.padRight(39)} ${typeMap[it.type.items]}" }.join(',\n')}
                       |)""".stripMargin()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49534659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档