我正在使用Jolt,并且我有一个输入对象,其中我想从一个属性中取出键,并将它们插入到另一个属性中的数组的每个对象中:

我的意见是:

{
  "jolt_marketplaceMetadata": {
    "NAN_KEY": 1,
    "TEMP": 3
  },
  "jolt_attributes": [
    {
      "name": "HELLO",
      "yyup": 3
    },
    {
      "huh": "please",
      "work": 2
    }
  ]
}

我想要的结果是:

 "jolt_attributes": [
    {
      "name": "HELLO",
      "yyup": 3,
      "NAN_KEY": 1,
      "TEMP": 3
    },
    {
      "huh": "please",
      "work": 2,
      "NAN_KEY": 1,
      "TEMP": 3
    }
  ]

我try 了几个不同的规范数组,我已经非常接近了,但我似乎想不出如何在不合并数组中每个对象的所有数据的情况下获得值:

[
  {
    "operation": "shift",
    "spec": {
      "jolt_attributes": {
        "*": {
          "*": "jolt_attributes[&1].&",
          "@(2,jolt_marketplaceMetadata)": "jolt_attributes[&1]"
        }
      }
    }
  }
]

这给了我:

{
  "jolt_attributes": [
    {
      "NAN_KEY": 1,
      "TEMP": 3,
      "name": "HELLO",
      "yyup": 3,
      "huh": "please",
      "work": 2
    },
    {
      "NAN_KEY": 1,
      "TEMP": 3,
      "name": "HELLO",
      "yyup": 3,
      "huh": "please",
      "work": 2
    }
  ]
}

它添加了jolt_market placeMetadata中的键,但每次也会将每个数组对象中的所有键/值合并在一起.

有什么好主意吗?

推荐答案

您可以使用以下shift个转换规范

[
  {
    "operation": "shift",
    "spec": {
      "jolt_attributes": {
        "*": {
          "*": "&2[#2].&",
          "@2,jolt_marketplaceMetadata.NAN_KEY": "&2[#2].NAN_KEY",
          "@2,jolt_marketplaceMetadata.TEMP": "&2[#2].TEMP"
        }
      }
    }
  }
]

哪里

  • &;2复制数组的密钥("jolt_attributes")
  • [#2]在遍历 树2级(一次用于冒号,一次用于左大括号),并按数组方式(此处为array of objects)生成结果

您甚至可以通过使用以下规范使其更具动态化

[
  {
    "operation": "shift",
    "spec": {
      "*attributes": {
        "*": {
          "@2,jolt_marketplaceMetadata": { "*": "&3[&1].&" }, // &3 represents going two levels up the tree to get the literal "jolt_attributes"
          "*": "&2[&1].&" // &2 represents going two levels up the tree to get the literal "jolt_attributes"; [&1] stands for bringing the values of the indexes of the "jolt_attributes" in array-wise manner.  
        }
      }
    }
  }
]

站点http://jolt-demo.appspot.com/上的101

enter image description here

Json相关问答推荐

jq不会为空输入返回非零

使用更高级别架构中的字段值在$def内实现约束

如何使用PowerShell从ExchangeOnline命令执行中获得JSON输出

震动范围改善

APIM 生成 JsonArray 到 EventHub

Groovy JsonBuilder 在for循环中添加数组元素

Powershell 无法从名为 count 的键中获取价值

使用 json_query 过滤嵌套列表中的元素

N1QL 搜索对象内的某些对象

如何在 Django 的模板语言中获取 json 键和值?

无法向 Json 数组添加新元素

在 JSON 编码的 HTML5 数据属性中转义/编码单引号

在 Rails 3 中处理 JS/ERB 模板中的 JSON

我们可以使用 JSON 作为数据库吗?

如何向(JSON)对象的原型添加方法?

如何在 Python 中合并两个 json 字符串?

杰克逊在通用列表中读取 json

确保数组中的项目属性在 Json Schema 中是唯一的?

通过url获取json数据并在python中使用(simplejson)

为什么 jqXHR.responseText 返回字符串而不是 JSON 对象?