Разбейте свойства JSON на массив объектов - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь преобразовать простой объект JSon в массив объектов с разбитыми ключами и значениями, но я не уверен, как этого добиться.

Я пробовал это несколькими способамино самое близкое, что я получил, - это создать объект с двумя массивами вместо массива с несколькими объектами с двумя свойствами каждый:

РЕДАКТИРОВАТЬ: Я пытаюсь написать спецификацию, которая будет принимать любой объект, а не этот конкретный объект.Я не знаю, чем будет входящий объект, кроме того, что он будет иметь простые свойства (значения не будут массивами или другими объектами).

Пример ввода:

{
  "property": "someValue",
  "propertyName" : "anotherValue"
}

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

{
    "split_attributes": [
        {
            "key" : "property",
            "value": "someValue"
        },
        {
            "key" : "propertyName",
            "value" : "anotherValue"
        }
    ]
}

Мои спецификации пока:

{ 
  "operation": "shift",
    "spec": {
       "*": {
        "$": "split_attributes[#0].key",
        "@": "split_attributes[#0].value"
      }
    }
  }

Производит

{
  "split_attributes" : [ 
     {
      "key" : [ "property", "propertyName" ], 
      "value" : [ "someValue", "anotherValue"]
     }
  ]
}

1 Ответ

0 голосов
/ 10 мая 2018

РЕШЕНИЕ

Я был довольно близко, и после просмотра тестов решение было очевидным (оно идентично одному из тестов)

{ 
  "operation": "shift",
    "spec": {
       "*": {
        "$": "split_attributes[#2].key",
        "@": "split_attributes[#2].value"
      }
    }
  }

Из того, что кажется, я создавал массив, но я искал неправильный уровень для индекса нового массива.Я все еще нечетко на всем уровне # (например, где в «дереве» (и какого объекта) на самом деле выглядят # 0, # 1 и # 2).

...