nutools/lib/ulib/json

32 lines
817 B
Plaintext
Raw Normal View History

2013-08-27 15:14:44 +04:00
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## gestion de contenu au format json
##@cooked nocomments
##@require base
uprovide json
urequire base
function json_filter() {
# traiter un flux json pour que chaque valeur soit sur une ligne séparée,
# facilitant le traitement par un script bash
awk '{
gsub(/}\][ ]*$/, "\n&")
gsub(/},[ ]*$/, "\n&")
gsub(/[][{]/, "&\n")
gsub(/,[ ]*"/, ",\n\"")
gsub(/"}/, "\",\n}")
print
}'
}
JSONFUNCS='
function json_get(line) {
if (!line) line = $0
match(line, /^[^"]*"[^"]*":[ ]*"?/); line = substr(line, RSTART + RLENGTH)
match(line, /"?[ ]*,?[ ]*$/); line = substr(line, 1, RSTART - 1)
return line
}
'
function awkjson() {
json_filter | awkrun -f "$JSONFUNCS" "$@"
}