0

我有一个这样的 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)"

但我认为我没有正确访问价值项目。有人可以帮我吗

4

1 回答 1

0

好的,猜测typeMap类似于:

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()
于 2018-03-28T14:30:07.140 回答