Search code examples
jsonbashopenwrt

Get key and value from json string limited with openwrt


Im checking inside a openwrt with very few shell commands to see If is possible to filter json string to have the values.

For example {"address":"192.168.2.2","user":"user1","groups":"permissions"}

I receive from curl the string and I need to separate values to pass vars to other commands.

For now Im checking some examples but not works

#!/bin/sh
. /usr/share/libubox/jshn.sh 
json_init
json_load '$(cat $STRING)'
json_get_keys keys
for k in $keys; do 
   json_get_var v "$k"
   echo "$k : $v"
done

But produce error "Failed to parse message data"

My problem is justly that I cna't use jq, or python to choose data, so only solution is to separate first.

Suggestions?


Solution

  • I found other form more clean to do the same

    eval $(jsonfilter -s $STRING -e '[email protected]' -e '[email protected]')
    echo "address=$ADDRESS user=$USER"
    

    With this form I can filter every value how parameter, without jq or python function.