【问题标题】:JDT transform to modify N-th array elementJDT变换修改第N个数组元素
【发布时间】:2020-08-30 00:12:00
【问题描述】:

我正在尝试将JDT 转换应用于 JSON 文档,以修改第 N 个数组元素中的属性。是否可以不必替换整个元素甚至整个数组?

{
  "array": [
    {
      name: "A",
      value: 0
    },
    {
      name: "B",
      value: 3.14
    }
  ]
}

是否有一个转换可以让我达到以下目标?我想改变第二个数组元素,只改变它的“值”属性。我不想按“名称”搜索它,而是按索引访问。

{
  "array": [
    {
      name: "A",
      value: 0
    },
    {
      name: "B",
      value: 12345678
    }
  ]
}

【问题讨论】:

  • 您找到解决方案了吗?或者至少确认它原则上可能有效?
  • 没有。我会在这里发布。

标签: json transform slowcheetah


【解决方案1】:

挑战

使用 JSON 格式的一些库很容易进行转换。如果你的对象被称为foo,你主要想要像foo.array[1].value = "12345678" 这样的东西,而不需要任何循环。

JDT 方式

我找到How to use SlowCheetah to transform an array elements in Json config file? 询问

例如,如果我的基本配置文件有这个设置:

{
  "Settings" :  [1, 2, 3] 
}

我想把它转移到:

{
  "Settings" :  [4, 5, 6] 
}

Collin K 的解决方案是

{
  "@jdt.replace": {
    "@jdt.path": "$.Settings",
    "@jdt.value": [4,5,6]
  }
}

这似乎你需要实际替换整个数组。

进一步挖掘让我找到open issue of JDT,这似乎证实了这一假设。

免责声明

我自己没有使用过 JDT,但我一直在努力处理各种嵌套的 JSON,例如使用弹性搜索。

更多参考

【讨论】:

  • 谢谢。不幸的是,这不是我所追求的。我认为问题描述得很清楚。在您的示例中,我想用例如替换元素 3一个 6(不是整个数组)。
  • 完全不相关的东西:你的头像显示的是什么键盘?
  • 哈哈。一个有趣的问题。它是 ZX Spectrum 48K。你必须真的很老才能知道这一点。不幸的是,您的广泛回答并没有为我解决问题。
  • Np & thx。我的第一台电脑是 C64……但我至少正确理解了这个问题吗?
猜你喜欢
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多