Найти элемент по идентификатору в JSON

Необходимо преобразовать на основе значения элемента input.json

{
  "Result": {
    "owner": {
      "name": "test  user"
    },
    "Components": [
      {
        "id": "123-456-789"
      }
    ],
    "123-456-789": {
      "temp": {
        "emip": "abc",
        "teto": "123"
      }
    }
  }
}

преобразовать JSON

[
  {
    "operation": "shift",
    "spec": {
      "Result": {
        "Components": {
          "*": {
            "id": "compId"
          }
        },
        "compId": {
          "@": "component"
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "compId": null
    }
  }
]

Ожидаемый результат будет

 "123-456-789": {
      "temp": {
        "emip": "abc",
        "teto": "123"
      }
    }

но результат ответа ниже, когда я жестко кодирую значение с 123-456-789, тогда я получаю значение, но мне нужно принять значение динамически.

{
  "compId" : "123-456-789"
}

1 ответ

Решение

Спекуляция

[
  {
    "operation": "shift",
    "spec": {
      "Result": {
        "Components": {
          "*": { // components array index
            "id": {
              "*": { // match any value of id
                // go back up the tree 5 levels, and then 
                //  lookup a key based on the value of the "id"
                //  and write that to the output at at that same 
                //  key
                "@(4,&)": "&1"
              }
            }
          }
        }
      }
    }
  }
]
Другие вопросы по тегам