这个问题仍然是相关的!
在我的任务中,json 是我的输入,我事先并不知道。我需要将所有 json 字段类型收集到“类型”中,并使用reader.outputLines
. 现在json字段类型的列表是这样形成的:
def types = list.find (). Values () *. GetClass () *. SimpleName
但是当第一个json块中的相同字段为null时,我遇到了一个问题,而在第二个中,整数和类型被定义为null,而不是整数。
- 如何确保通过遍历每个字段的所有 json 块来确定类型,而不是根据第一个块进行输出,如果所有内容均为 null 或“”(空),则分配默认字符串?
- 使用 json 从 json 返回值时
reader.outputLines
,将 null 替换为“”(空)?
import groovy.json.JsonSlurper
import ru.itrpro.xm.plugins.groovy.ResultSetReader;
class XM_PARSE_XLS {
def execute(ResultSetReader reader, String pfile) {
def jsonSlurper = new JsonSlurper()
def list = jsonSlurper.parseText pfile
List names = list.inject( new LinkedHashSet<>() ){ res, map ->
res.addAll map.keySet()
res
}.toList()
def types = list.find().values()*.getClass()*.simpleName
//formation of the dataset header
reader.outputLinesSetHeaders(names,types);
list.each{ e ->
reader.outputLines names.collect{ e[ it ] }
//println names.collect{ e[ it ] }
}
//closing dataset
reader.outputLinesEnd();
return null;
}
static void main(String... args) {
String pfile = """
[{"AUTO":"bmw",
"HOME":null,
"JOB":""},
{"AUTO":"audi",
"HOME":135,
"JOB":null},
{"AUTO":"opel1",
"HOME":10,
"JOB":null}]
"""
def SSC = new XM_PARSE_XLS()
def res = SSC.execute(new ResultSetReader(), pfile)
}
}