X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=sh%2Fjshn.sh;h=1090814bc8fb2558053cb43cd26030536f4883c2;hp=dab40e4fdfcf89a60f2538fbd0e38b2f685feacf;hb=1c08e80313fd487112c48346889cc57badeef751;hpb=d59fa8d58844f3d6fad70a540a73ee6290613dd4 diff --git a/sh/jshn.sh b/sh/jshn.sh index dab40e4..1090814 100644 --- a/sh/jshn.sh +++ b/sh/jshn.sh @@ -90,7 +90,6 @@ _json_close_table() { _json_get_var _s_cur JSON_CUR _json_get_var "${JSON_PREFIX}JSON_CUR" "U_$_s_cur" - unset "${JSON_PREFIX}U_$_s_cur" } json_set_namespace() { @@ -105,7 +104,7 @@ json_cleanup() { local unset tmp _json_get_var unset JSON_UNSET - for tmp in $unset JSON_VAR; do + for tmp in $unset J_V; do unset \ ${JSON_PREFIX}U_$tmp \ ${JSON_PREFIX}K_$tmp \ @@ -125,8 +124,8 @@ json_init() { json_cleanup export -n ${JSON_PREFIX}JSON_SEQ=0 export -- \ - ${JSON_PREFIX}JSON_CUR="JSON_VAR" \ - ${JSON_PREFIX}K_JSON_VAR= + ${JSON_PREFIX}JSON_CUR="J_V" \ + ${JSON_PREFIX}K_J_V= } json_add_object() { @@ -169,6 +168,12 @@ json_add_double() { _json_add_generic double "$1" "$2" "$cur" } +json_add_null() { + local cur + _json_get_var cur JSON_CUR + _json_add_generic null "$1" "" "$cur" +} + # functions read access to json variables json_load() { @@ -250,13 +255,12 @@ json_select() { local cur [ -z "$1" ] && { - _json_set_var JSON_CUR "JSON_VAR" + _json_set_var JSON_CUR "J_V" return 0 } [[ "$1" == ".." ]] && { _json_get_var cur JSON_CUR _json_get_var cur "U_$cur" - unset "${JSON_PREFIX}U_$cur" _json_set_var JSON_CUR "$cur" return 0 } @@ -264,7 +268,6 @@ json_select() { case "$type" in object|array) json_get_var cur "$target" - _json_get_var "${JSON_PREFIX}U_$cur" JSON_CUR _json_set_var JSON_CUR "$cur" ;; *)