从受 openwrt 限制的 json 字符串中获取键和值
Get key and value from json string limited with openwrt
我正在用很少的 shell 命令检查 openwrt 内部,看看是否可以过滤 json 字符串以获得值。
例如
{"address":"192.168.2.2","user":"user1","groups":"permissions"}
我从 curl 接收到字符串,我需要分隔值以将变量传递给其他命令。
目前我正在检查一些示例但没有用
#!/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
但产生错误"Failed to parse message data"
我的问题是我不会用jq,或者python选择数据,所以唯一的解决办法就是先分离。
建议?
我发现其他表格更干净,可以做同样的事情
eval $(jsonfilter -s $STRING -e 'ADDRESS=@.address' -e 'USER=@.user')
echo "address=$ADDRESS user=$USER"
通过这种形式,我可以过滤每个值如何参数,无需 jq 或 python 函数。
我正在用很少的 shell 命令检查 openwrt 内部,看看是否可以过滤 json 字符串以获得值。
例如 {"address":"192.168.2.2","user":"user1","groups":"permissions"}
我从 curl 接收到字符串,我需要分隔值以将变量传递给其他命令。
目前我正在检查一些示例但没有用
#!/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
但产生错误"Failed to parse message data"
我的问题是我不会用jq,或者python选择数据,所以唯一的解决办法就是先分离。
建议?
我发现其他表格更干净,可以做同样的事情
eval $(jsonfilter -s $STRING -e 'ADDRESS=@.address' -e 'USER=@.user')
echo "address=$ADDRESS user=$USER"
通过这种形式,我可以过滤每个值如何参数,无需 jq 或 python 函数。