Как реконструировать отдельный объект после его деконструкции в jq - PullRequest
0 голосов
/ 12 декабря 2018

Я получаю довольно большой файл json с большим количеством свойств, которые существуют только по историческим причинам и больше не используются.Чтобы упростить этот файл, я использовал jq, деконструированный json с to_entries, но теперь я не знаю, как восстановить свой объект обратно с оставшимися подобъектами.

Вот пример:

вход

{
  "empty1": [],
  "empty2": [],
  "full1": "test",
  "full2": { "a": 1, "b": 2 }
}

текущий фильтр:

to_entries[] | select((.value | length) > 0) | { (.key) : .value }

токовый выход

{"full1":"test"}
{"full2":{"a":1,"b":2}}

желаемый выход

{
  "full1": "test",
  "full2": {
    "a": 1,
    "b": 2
  }
}

1 Ответ

0 голосов
/ 12 декабря 2018

Использование with_entries() намного короче, с чем вы можете просто сделать

jq 'with_entries(select((.value | length) > 0))' json

. По вашему вопросу, from_entries делает обратное преобразование to_entries.И использование with_entries(foo) является сокращением для синтаксиса to_entries | map(foo) | from_entries.

...