Jq: создать объект из значений

У меня есть этот ввод:

{ "k1": "v1", "k2": "v2" }

Я хочу получить это:

{ "v1": "v2" }

Итак, в основном, я хочу создать объект из значений другого объекта, не зная значений, а только их ключей.

Я пробовал несколько map(), но не повезло. Любой намек?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот способ:

{(.k1): .k2}

Online demo

Почему нам нужно () вокруг .k1, а не .k2?

Philippe 06.06.2023 01:05

@Philippe Филипп, я не знаю, в руководстве не сказано, почему, просто мы делаем

oguz ismail 06.06.2023 04:57

Большинство современных «мануалов» просто надоедливы: никаких объяснений, много примеров.

EnzoR 06.06.2023 07:30

oguz ismail и @EnzoR, это в руководстве: «Ключевые выражения, кроме константных литералов, идентификаторов или ссылок на переменные, должны быть заключены в скобки». Если вы имеете в виду, что аргументы, лежащие в основе этого решения по дизайну языка, отсутствуют в справочном руководстве, то этого никогда не было в справочных руководствах и по уважительным причинам. Но читайте дальше, если хотите узнать.

ikegami 06.06.2023 23:54

@Филипп, { a: 123 } означает { "a": 123 }. { (a): 123 } отличается, так как это оценивает выражение a. Теперь, в отличие от { a: 123 }, { .k: 123 } не является двусмысленным, поэтому они могли бы это допустить. Другими словами, один из подходов, который мог бы использовать язык, состоит в том, чтобы запрашивать скобки только в случае неоднозначности. Но вместо этого он пошел с подходом, согласно которому все выражения, кроме автоматически цитируемых голых слов, литералов в кавычках и переменных, должны использовать круглые скобки.

ikegami 06.06.2023 23:55

Есть плюсы и минусы для обоих. Один из плюсов подхода, который он использует, заключается в том, что он упрощает синтаксический анализатор (поскольку ему не нужно проверять, что следует за a в { a ..., чтобы знать, что a является пустым словом для автоматического цитирования). Это также гораздо менее удивительно (поскольку { x y: ... } не работает иначе, чем { x: ... }). Во-вторых, это дает ему возможность ослабить требования в будущих версиях без проблем с обратной совместимостью. Наконец, всегда использовать круглые скобки для выражений более последовательно.

ikegami 06.06.2023 23:56

Другие вопросы по теме