Use jq to interpret nested JSON in JSON

355 Views Asked by At

I'm looking to use jq to automatically resolve any field which contains json as json, example:

Input

{
  "guaranteedPrizes": "[]",
}

Output

{
  "guaranteedPrizes": [],
}
2

There are 2 best solutions below

0
On BEST ANSWER

For a generic solution, you might wish to consider walk/1, and for efficiency, avoid calling fromjson redundantly:

walk(if type == "string"
     then . as $x | try fromjson catch $x
     else . end)
0
On

If you want to go off the “deep end” and try evaluating fromjson recursively:

def deep:
  walk(if type == "string"          
           then . as $x 
           | try (fromjson | deep)
             catch $x     
           else . end);
deep