NiFi:EvaluateJSONPath &如果JSON对象包含匹配属性的对象,则拆分

tcomlyy6  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(148)

Nifi EvaluateJsonPath by comparing with an Attribute非常相似的问题:
我收到的JSON如下所示:

{
"Resources": null,
"ResourceCategories": [
    {
        "Id": "abc",
        "ServiceId": "def",
        "IsActive": true,
        "Type": "Room",
        "Names": {
            "en-GB": "OPT-DOUBLE"
        },
        ...
    },
    {
        "Id": "hij",
        "ServiceId": "lmn",
        "IsActive": true,
        "Type": "TeamArea",
        "Names": {
            "en-GB": "King Double Room SAMPLE",
            "es-ES": "King Double Room",
            "et-EE": "King Double Room",
        },
        ...
    }
]

}
我正在存储属性数据.defaultLanguage,可以是en-GB、en-US等。
我尝试使用EvaluateJsonPath,方法是:
$.资源类别[*].名称[${数据.默认语言}]
但是因为EvaluateJsonPath不支持表达式语言,所以这不起作用。
我想做的是:
IF Names包含名称与data.defaultLanguage匹配的子架构,则将其值存储为属性。忽略Names架构中的所有其他对象。
感觉如果有某种方法可以将每个Names模式中的所有子模式作为属性名添加,我就可以得到它。
你觉得我该怎么办?谢谢!

l7wslrjt

l7wslrjt1#

将内容传递到属性中并使用jsonPath函数时,这是可能的

    • 示例(生成流文件-〉提取文本-〉更新属性):**
    • 生成流文件**(带属性的输入):
  • Custom text
{
    "Resources": null,
    "ResourceCategories": [{
            "Id": "abc",
            "ServiceId": "def",
            "IsActive": true,
            "Type": "Room",
            "Names": {
                "en-GB": "OPT-DOUBLE"
            }
        },
        {
            "Id": "hij",
            "ServiceId": "lmn",
            "IsActive": true,
            "Type": "TeamArea",
            "Names": {
                "en-GB": "King Double Room SAMPLE",
                "es-ES": "King Double Room",
                "et-EE": "King Double Room"
            }
        }
    ]
}
  • data.defaultLanguage(动态属性):
en-GB
  • path(动态属性):
$.ResourceCategories[*].Names['PLACEHOLDER']
    • 提取文本**(内容到属性):
  • Enable DOTALL Modetrue
  • Enable Multiline Modetrue
  • Enable Unix Lines Modetrue
  • json(动态属性):
(.*)
    • 更新属性**(评估jsonPath):
  • json-path(动态属性):
${json:jsonPath(${path:replace("PLACEHOLDER", ${data.defaultLanguage})})}
    • 输出**(json-path属性):
["OPT-DOUBLE","King Double Room SAMPLE"]

相关问题