使用 Jolt 从第一个数组元素中提取值

Arj*_*Arj 4 json jolt

我有以下 JSON 文档:

{
    "pbid": 123,
    "pid": 0,
    "time": 1483551745000,
    "timestamp": "2017-01-04 17:42:25",
    "creationTime": 1483551789000,
    "creationTimestamp": "2017-01-04 17:43:09",
    "name": "myname",
    "triggeredComponents": [
        {
            "device": {
                "did": 20,
                "ip": "127.0.0.1",
                "firstSeen": 1427474095000,
                "lastSeen": 1483545006000,
                "typename": "dnsserver"
            },
            "time": 1483551789000
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

使用 Jolt 我需要将其转换为以下内容:

{
  "event_id" : 123,                ( pbid )
  "name" : "myname",               ( name )
  "did": "20",                     ( triggeredComponents[0].device.did )
  "first_seen": 1427474095000,     ( triggeredComponents[0].device.firstSeen )
  "last_seen": 1483545006000       ( triggeredComponents[0].device.lastSeen )
}
Run Code Online (Sandbox Code Playgroud)

我对基本的转变(event_idname)没问题,但我不知道如何从数组中提取。这是我目前的尝试(我也尝试过其他一些方法):

[
  {
    "operation": "shift",
    "spec": {
      "pbid": "event_id",
      "name": "name",
      "triggeredComponents" : {
        "*": {
          "did": "triggeredComponents[&1].device.did",
          "first_seen": "triggeredComponents[&1].device.firstSeen",
          "last_seen": "triggeredComponents[&1].device.lastSeen"
        }
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

在与供应商追逐后,triggeredComponents数组似乎只包含一个对象,因此我只需要查看第 0 个元素。

Mil*_*o S 6

规格 [ { "operation": "shift", "spec": { "pbid": "event_id", "name": "name", "triggeredComponents": { "0": { "device": { "did": "did", "firstSeen": "first_seen", "lastSeen": "last_seen" } } } } } ]

您错过了“triggeredComponents[0]”和“did”之间的“设备”。

  • 太好了,谢谢,这有效,现在非常有意义。我是 Jolt 的粉丝,但我似乎找不到任何有关规范语法的具体文档,只有示例...... (2认同)