我正在使用带有定界符_
的Flatten Json处理器,到目前为止,它可以展平嵌套的记录。但是我也注意到它会干扰已经带有“ _”的键。例如:
{
"first_name": "myfirstname",
"last_name": "mylastname",
"address": {
"billing": "mybilling",
"shipping": "myshipping"
}
}
展平至:
{
"[\"first_name\"]": "myfirstname",
"[\"last_name\"]": "mylastname",
"address_billing": "mybilling",
"address_shipping": "myshipping"
}
在“ address
”记录被按预期压平的同时,具有first_name
字符的键last_name
和_
也受到干扰。有什么办法可以规避吗? (也许是一种逃避非记录类型的方法?)
答案 0 :(得分:2)
要解决此问题,您可以使用
JoltTransformJson 处理器
(或)
在 FlattenJson 中保持分隔符(例如'|','-'.. etc)
not present in key
个名称。
1。使用JoltTransformJson处理器:
规范:
[
{
"operation": "shift",
"spec": {
"*": "&",
"address": {
"*": "address_&"
}
}
}
]
输出:
{
"first_name" : "myfirstname",
"last_name" : "mylastname",
"address_billing" : "mybilling",
"address_shipping" : "myshipping"
}
2。FlattenJson处理器:
输出:
{
"first_name": "myfirstname",
"last_name": "mylastname",
"address|billing": "mybilling",
"address|shipping": "myshipping"
}
答案 1 :(得分:0)
NiFi 1.7.1使用版本为0.5.0的名为json-flattener的外部库。 当前unconditionally会检查保留字符并将其替换为您看到的格式。 这样做的原因是可以使文档再次明确地展开。
有一个pull request实现了禁用此功能的选项,但自2017年7月以来尚未合并。
简而言之:NiFi本身无法采取任何措施来绕开此事。