LINUX.ORG.RU

json formater

 


0

2

посоветуйте пожалуйста консольную утилиту которая из такого

{ "a" : [ { "b" : "c" } ] }

сделает такое:

{
    "a" :
    [
        {
            "b" : "c"
        }
    ]
}

именно конкретно в таком стиле и такими отступами

★★★★
 echo '{ "a" : [ { "b" : "c" } ] }'|python -mjson.tool                                                                               /var/www/marfa.project-dev/venv/marfa
{
    "a": [
        {
            "b": "c"
        }
    ]
}

Чуть другой формат, не сойдёт?

x3al ★★★★★
()

Напиши сам. Подобное форматирование, а конкретно \n после двоеточия не канон, так никто не выводит, насколько мне известно. Самое ближайшее это вот:

python -m json.tool <<< '{ "a" : [ { "b" : "c" } ] }'

mix_mix ★★★★★
()
Ответ на: комментарий от quest

json sed, грубо говоря; но выводит он так же, как и питон, можешь не ставить

mix_mix ★★★★★
()
Ответ на: комментарий от quest

Да а что там его писать, простой конечный автомат. K&R благословляют тебя.

mix_mix ★★★★★
()

ээ..sed например

flex ещё весьма неплох :-)

MKuznetsov ★★★★★
()

vim ;)

$ echo ':0,$s#{#{\r#g
:0,$s#}#\r}#g
:0,$s#\[#\r[\r#g
:0,$s#\]#\r]#g
:set sw=4 sts=4
gg=G
:wq' > /tmp/format.vim && \
echo '{ "a" : [ { "b" : "c" } ] }' > /tmp/formated.txt && \
vim -s /tmp/format.vim /tmp/formated.txt && \
cat /tmp/formated.txt
{
    "a" : 
	[
	{
	    "b" : "c" 
	} 
	] 
}
чуть подшаманить и самое то :)

anTaRes ★★★★
()

именно конкретно в таком стиле и такими отступами

Проще свой велосипед написать, чем перебирать десяток чужих и убеждаться что там «именно тот» формат. Тут писать то строчек на 5-10.

zinfandel ★★
()

Половину дела сделал

Spaces={
 string: "\n",
 create: function(){return Object.create(this)},
 add: function(){return this.string+="  "}
}


String.prototype.rplce=function(s){
   var string=Spaces.create()
   return this.replace(/\{\s*|\[\s*|:\s*(?=\[|\{)/g, function(s){
      return s+string.add()
    })
}
 

s='{ "a" : [ { "b" : "c" } ] }'


s.rplce().print


//>>>> { 
//>>>>   "a" : 
//>>>>     [ 
//>>>>       { 
//>>>>         "b" : "c" } ] }

Дальше думать лень:)

javaQest
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.