在我的自定义处理器中,我在下面的字段中添加了
public static final PropertyDescriptor CACHE_VALUE = new PropertyDescriptor.Builder()
.name("Cache Value")
.description("Cache Value")
.required(true)
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
.build();
我希望在其中读取流文件属性,例如$ {fieldName} 以及。*等正则表达式来读取全部内容或部分内容,例如$ .nodename.subnodename
为此,我添加了以下代码
for (FlowFile flowFile : flowFiles) {
final String cacheKey = context.getProperty(CACHE_KEY).evaluateAttributeExpressions(flowFile).getValue();
String cacheValue = null;
cacheValue = context.getProperty(CACHE_VALUE).evaluateAttributeExpressions(flowFile).getValue();
if (".*".equalsIgnoreCase(cacheValue.trim())) {
final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
session.exportTo(flowFile, bytes);
cacheValue = bytes.toString();
}
cache.put(cacheKey, cacheValue);
session.transfer(flowFile, REL_SUCCESS);
}
如何实现这一部分内容,例如$ .nodename.subnodename。 我需要解析json还是有其他方法?
答案 0 :(得分:0)
您要么必须自己解析JSON,要么使用EvaluateJsonPath
处理器,然后才能到达该处理器,以通过JSON Path表达式将内容值提取到属性中,然后在您的自定义代码中,引用属性。