|
|
|
|
|
by davvid
3698 days ago
|
|
Here's the equivalent using jsonaxe[1]. The main difference is the python-like syntax, which is either good or bad depending on your tastes. The pain point about string interpolation remains, tho. data=input.json
fruits () {
jsonaxe 'models.filter(lambda x: x["title"] == "fruits")[0]' "$data"
}
farmers () {
jsonaxe 'models.filter(lambda x: x["title"] == "farmers")[0]' "$data"
}
fruit_name_key=$(fruits |
jsonaxe --raw 'fields.filter(lambda x: x["name"] == "Name")[0].key')
farmer_name_key=$(farmers |
jsonaxe --raw 'fields.filter(lambda x: x["name"] == "Full name")[0].key')
farmer_fruits_key=$(farmers |
jsonaxe --raw 'fields.filter(lambda x: x["name"] == "Fruits")[0].key')
farmers |
# get bob
jsonaxe "entities.filter(lambda x: x['$farmer_name_key'] == 'Bob, the farmer')[0]" |
# get bob's fruits key
jsonaxe --raw "get('$farmer_fruits_key')" |
while read fruit_id
do
fruits |
jsonaxe "entities.filter(lambda x: x['_id'] == '$fruit_id')[0]" |
jsonaxe "get('$fruit_name_key')"
done
[1] https://github.com/davvid/jsonaxe |
|