выборочно вырезать JSON-контент - PullRequest
0 голосов
/ 13 июня 2019

У меня есть такие объекты json:

{
  "foo": "bar",
  "object": {
    "a": "b",
    "c": "d",
    "e": "f"
  },
  "objectWithObjects": {
    "a": 1,
    "b": 2,
    "c": {
      "a": 1,
      "b": 2,
      "c": 3
    }
  },
  "array1": [
    {
      "a": 1,
      "b": 2,
      "c": 3
    },
    {
      "a": 4,
      "b": 5,
      "c": 6
    },
    {
      "a": 7,
      "b": 8,
      "c": 9
    }
  ],
  "objectWithNestedArray": {
    "foo": "bar",
    "array2": [
      {
        "a": 1,
        "b": 2,
        "c": [
          {
            "a": 1,
            "b": 2,
            "c": 3
          },
          {
            "a": 4,
            "b": 5,
            "c": 6
          }
        ]
      },
      {
        "a": 4,
        "b": 5,
        "c": [
          {
            "a": 1,
            "b": 2,
            "c": 3
          },
          {
            "a": 4,
            "b": 5,
            "c": 6
          }
        ]
      }
    ]
  }
}

, и мне нужно выборочно сократить его, используя список путей, таких как:

foo 
object.c 
objectWithObjects.a
objectWithObjects.c.b
objectWithObjects.c.c
array1.a
objectWithNestedArray.foo
objectWithNestedArray.array2.b
objectWithNestedArray.array2.c.b

, и результат будет:

{
  "foo": "bar",
  "object": {
    "c": "d",
  },
  "objectWithObjects": {
    "a": 1,
    "c": {
      "b": 2,
      "c": 3
    }
  },
  "array1": [
    {
      "a": 1,
    },
    {
      "a": 4,
    },
    {
      "a": 7,
    }
  ],
  "objectWithNestedArray": {
    "foo": "bar",
    "array2": [
      {
        "b": 2,
        "c": [
          {
            "b": 2,
          },
          {
            "b": 5,
          }
        ]
      },
      {
        "b": 5,
        "c": [
          {
            "b": 2,
          },
          {
            "b": 5,
          }
        ]
      }
    ]
  }
}

Я искал решение ruby, так как я работаю с хэшем ruby, но я могу сделать это во внешнем интерфейсе с помощью javascript / JSON, если это необходимо.Есть ли библиотека, которая может это сделать?Или, может быть, нескольких строк кода будет достаточно для выполнения этой работы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...