0

我有一个棘手的问题要问,据我所知,我还没有看到任何人遇到同样的问题,至少不是一次全部!

我有以下测试 JSON 来转换:

输入

[
  {
    "test_id": 1212101011,
    "someDate": "2020-03-06",
    "keyToCheck": "true",
    "someData": "123"
  },
  {
    "test_id": 8787909099,
    "someDate": "2020-03-09",
    "keyToCheck": "false",
    "someData": "456"
  }
]

我正在尝试获得以下输出。

期望的

[{
   "test_id": 1212101011,
   "someDate": "2020-03-06",
   "keyToCheck": "true",
   "someData": "123",
   "objToAdd": {
      "id": "1",
      "label": "dummy1"
   }
},{
   "test_id": 8787909099,
   "someDate": "2020-03-09",
   "keyToCheck": "false",
   "someData": "456",
   "objToAdd": {
      "id": "2",
      "label": "dummy2"
}]

我已经设法传播所有值并在需要时更改字段的名称,但是添加条件只会破坏一切。此外,根据我目前的规范,在转换后我没有得到一个数组,而我已经可以使用我以前的规范获得。

我到目前为止的规格是:

规格使用

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "keyToCheck": {
          "true": {
            "#1": "objToAdd.id",
            "#dummy1": "objToAdd.label"
          },
          "false": {
            "#2": "objToAdd.id",
            "#dummy2": "objToAdd.label"
          }
        }
      }
    }
  }
]

但如前所述,它只给了我这个:

迄今为止的结果

{
  "objToAdd" : {
    "id" : [ "1", "2" ],
    "label" : [ "dummy1", "dummy2" ]
  }
}

这似乎是一个缩进的问题。在条件中的值之前添加 [&1] 没有帮助,当我使用“*”传播值时:“[&1].&”,我丢失了 if-else 条件生成的项目。

有没有办法做到这一点?任何帮助,将不胜感激!提前致谢。

4

1 回答 1

0

检查这个规格,

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "test_id": "[&1].test_id",
        "someDate": "[&1].someDate",
        "someData": "[&1].someData",
        "keyToCheck": {
          "true": {
            "$": "[&3].keyToCheck",
            "#1": "[&3].objToAdd.id",
            "#dummy1": "[&3].objToAdd.label"
          },
          "false": {
            "$": "[&3].keyToCheck",
            "#2": "[&3].objToAdd.id",
            "#dummy2": "[&3].objToAdd.label"
          }
        }
      }
    }
  }
]
于 2020-04-14T08:46:00.887 回答