json - 我们如何遍历震动规范?

标签 json apache-nifi jolt

这是一个简单的问题,我是 nifi 和 jolt 的新手。我只是想知道,如何在使用通配符时遍历 jolt 规范。例如,这是 jolt 演示站点中的示例,

输入是

{
  "data": {
    "1234": {
      "clientId": "12",
      "hidden": true
    },
    "1235": {
      "clientId": "35",
      "hidden": false
    }
  }
}

规范为

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          "hidden": {
            "true": {
              // if hidden is true, then write the value disabled to the RHS output path
              // Also @(3,clientId) means lookup the tree 3 levels, to the "1234" or "1235" level,
              //  and then come back down down the tree and grabe the value of "clientId"
              "#disabled": "clients.@(3,clientId)"
            },
            "false": {
              "#enabled": "clients.@(3,clientId)"
            }
          }
        }
      }
    }
  }
]

输出是

{
  "clients" : {
    "12" : "disabled",
    "35" : "enabled"
  }
}

我们是如何得到上面的输出的?就像 @(3,clientsid) 一样。据我所知,它上升了 3 个级别。但是 3 个级别相对于什么......规范或输入?无论哪种方式,如何向上移动 3 个级别,您能在这里定义哪些级别吗?

提前致谢

最佳答案

只需向后计算每个左大括号({)或冒号(:)的数量即可。每当它们不独立时,例如 :{,则将其计为只有一个,以便到达目标键,即 "*" 在本例中,通配符位于 "data" 键下,对于 @(3,clientId);第一级是跨越 "#disabled""#enabled" 旁边的冒号 (:),第二级是跨越左大括号在每个 bool 键旁边,然后第三级是在 "hidden" 键后面交叉左大括号,以到达具有 "data" 的对象的索引关键。

关于json - 我们如何遍历震动规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69805887/

相关文章:

ruby-on-rails - Rails - json.erb 模板

java - 使用 GSON 反序列化两种不同的日期格式

php - 解析JSON并加载到MYSQL的性能

javascript - 无法访问 json 对象属性并且值在 Rails View 中显示为未定义

openssl - 通过 HTTPS 为 NiFi 生成自签名证书

arrays - 震动 : Make Nested Make a nested array as part of main array

java - 如何从 maven Central 构建 nifi 处理器 nar 文件和依赖项

hadoop - 使用 NIFI 从 Kafka 插入到 Cassandra

jolt - 如果值不存在则设置为 null,否则如果在 jolt 中存在则返回现有值

json - 如何从 json 值 Apache Nifi 替换\n 和\"?