Сравните 2 отчета JSON о огурце с рубином - PullRequest
0 голосов
/ 21 ноября 2018

Проблема в том, что у меня есть 2 отчета об испытаниях огурцов в формате JSON, мне нужно удалить из этих отчетов лишние пары ключ-значение и сравнить их, но я не могу понять, как удалить ненужные данные из этих 2 jsons из-заих структура после JSON.parse (массив или хеш со множеством вложенных массивов / хэшей).Пожалуйста, посоветуйте, если есть какие-то гемы или известные решения для этой структуры JSON, например:

[
  {
    "uri": "features/home_screen.feature",
    "id": "as-a-user-i-want-to-explore-home-screen",
    "keyword": "Feature",
    "name": "As a user I want to explore home screen",
    "description": "",
    "line": 2,
    "tags": [
      {
        "name": "@home_screen",
        "line": 1
      }
    ],
    "elements": [
      {
        "keyword": "Background",
        "name": "",
        "description": "",
        "line": 3,
        "type": "background",
        "before": [
          {
            "match": {
              "location": "features/step_definitions/support/hooks.rb:1"
            },
            "result": {
              "status": "passed",
              "duration": 505329000
            }
          }
        ],
        "steps": [
          {
            "keyword": "Given ",
            "name": "I click OK button in popup",
            "line": 4,
            "match": {
              "location": "features/step_definitions/registration_steps.rb:91"
            },
            "result": {
              "status": "passed",
              "duration": 2329140000
            }
          },
          {
            "keyword": "And ",
            "name": "I click Allow button in popup",
            "line": 5,
            "match": {
              "location": "features/step_definitions/registration_steps.rb:96"
            },
            "result": {
              "status": "passed",
              "duration": 1861776000
            }
          }
        ]
      },

1 Ответ

0 голосов
/ 21 ноября 2018

Поскольку вы запрашиваете драгоценный камень, вы можете попробовать iteraptor, который я создал именно для такого рода задач.

Он позволяет выполнять итерации, отображать и сокращать глубоко вложенные структуры.,Например, чтобы отфильтровать все ключи, называемые "name" на всех уровнях, вы можете сделать:

input.iteraptor.reject(/name/)

Более подробное описание можно найти на странице github, указанной выше.

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