Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert string to json in jq

Background

I have a json file that contains a string of json within an object:

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

I need to interperet the contents of the .response.text string as json using the json command line interpereter, jq.

When I run this command:

jq '.response.text | @json' 

Output: "\"{\\\"recordID\\\":123, \\\"title\\\":\\\"Hello World\\\", \\\"content\\\":\\\"Lorem ipsum...\\\"}\""

I get some weird escaped json string instead of json that I can access via something like this: .response.text | @json | .recordID.

I realize that the @json function will take json and output a json escaped string, so there must be another way, but @text doesn't seem to do anything.

Question

Is there some way to convert a string of escaped json to actual json that I can parse with a command such as this: jq '.response.text | @json | .title' and get this output: "Hello World"?

like image 824
RJ-Adam Avatar asked Dec 17 '15 17:12

RJ-Adam


People also ask

Can jq write JSON?

jq is an amazing little command line utility for working with JSON data.

How can I convert JSON to string?

Use the JavaScript function JSON. stringify() to convert it into a string. const myJSON = JSON. stringify(obj);

What is jq for JSON?

jq is a lightweight and flexible command-line JSON processor. It is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text. jq is a fantastic command-line JSON processor.


1 Answers

Use fromjson.

It parses a string to its appropriate json value. tojson (and @json) goes the other way around and takes a json value and converts it to a string.

So you could do this:

.response.text | fromjson.title 
like image 94
Jeff Mercado Avatar answered Sep 28 '22 03:09

Jeff Mercado