Streamsets中Groovy Evaluator构建JSON对象报错求助
解决Streamsets Groovy Evaluator构建JSON的编译错误
错误根源
编译错误是因为你构建filter字符串时,没有正确处理字符串边界,Groovy把字符串里的and当成了代码逻辑运算符,而非字符串内容,导致语法解析失败。
正确实现方案
推荐用Groovy的Map结构来构造目标JSON,再转为字符串,这种方式不用手动处理繁琐的引号转义:
// 构造对应结构的Map def queryConfig = [ filter: "(equals(type,'my/specific/Type') and equals(attributes.number, '1234') and equals(attributes.status,'ACTIVE'))", max: 10 ] // 转换为JSON字符串(用Streamsets环境自带的Jackson工具) def jsonResult = com.fasterxml.jackson.databind.ObjectMapper.newInstance().writeValueAsString(queryConfig) // 将结果输出到后续阶段 output = jsonResult
如果偏好直接拼接字符串,可用Groovy的三重双引号包裹多行字符串(自动处理内部引号,无需转义):
def jsonStr = """ { "filter": "(equals(type,'my/specific/Type') and equals(attributes.number, '1234') and equals(attributes.status,'ACTIVE'))", "max": 10 } """.trim() output = jsonStr
额外提示
- 你原示例里的
filter字符串最后少了一个闭合括号,上面的代码已补全,避免后续JSON解析出错。 - Streamsets Groovy Evaluator必须将最终结果赋值给
output变量,才能把数据传递到下一个组件。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

