Преобразование строки в json в jq

Задний план

У меня есть json файл, содержащий строку json внутри объекта:

{
    "requestType": "POST",
    "response": {
        "size": 78,
        "text": "{\"recordID\":123, \"title\":\"Hello World\", \"content\":\"Lorem ipsum...\"}"
    }
}

Мне нужно .response.text строки .response.text как json, используя jper.

Когда я запускаю эту команду:

jq '.response.text | @json'

Вывод: "\"{\\\"recordID\\\":123, \\\"title\\\":\\\"Hello World\\\", \\\"content\\\":\\\"Lorem ipsum...\\\"}\""

Я получаю какую-то странную escape-строку json вместо json, к которой я могу получить доступ через что-то вроде этого: .response.text | @json |.recordID .response.text | @json |.recordID .response.text | @json |.recordID.

Я понимаю, что функция @json будет принимать json и выводить строку с экранированной json, поэтому должен быть другой способ, но @text ничего не делает.

Вопрос

Есть ли способ преобразовать строку escaped json в фактический json, который я могу проанализировать с помощью такой команды: jq '.response.text | @json |.title' jq '.response.text | @json |.title' jq '.response.text | @json |.title' и получить этот вывод: "Hello World"?

Ответ 1

Используйте fromjson.

Он анализирует строку json на соответствующее значение json. tojson@json) идет наоборот и принимает значение json и преобразует его в строку json.

Таким образом, вы можете сделать это:

.response.text | fromjson.title