JSON整形をブラウザでオンラインツールなどで行うなら、過去に紹介した
JSON Editor の紹介 - Oboe吹きプログラマの黙示録
を使えば良いが、
サクラエディタのマクロに登録しておくものがある。
しかし、ネットで紹介されてるマクロは、複数の項目 or 値がある時、
区切りのカンマ文字の前で改行している。カンマ区切りの後で改行してほしい。
そこで、ちょっと手を加えてあげればよい。
登録するマクロを次のようにする。
jsonpretty.js
var cnt = GetLineCount(0); var textAll = ""; for(var i = 1; i <= cnt; i++){ var str = GetLineStr(i).replace(/\n/,"").replace(/\r\n/,""); textAll += str; } var editJson = ""; var innerFlg = false; var intentLv = 0; var quoteType = []; var blockType = []; var preChr = ""; var indent = "\t"; // インデント var rtnChr = "\r\n"; // 改行 for(var i=0; i < textAll.length; i++){ var prefix = ""; var suffix = ""; var rtn = ""; var c = textAll.substring(i, i + 1); if (!innerFlg){ if (c == " "){ continue; } if (c == "\"" || c == "'"){ innerFlg = true; quoteType[quoteType.length] = c; // JSON または 配列の1つ目の要素の時はスペース1個を追加 var chkText = editJson.replace(/( |\t|\r\n|\n)/g, ""); if (chkText.length > 0){ var preChar = chkText.substring(chkText.length - 1, chkText.length); } }else{ if (c == "{" || c == "["){ suffix = ""; intentLv = intentLv + 1; blockType[blockType.length] = c; for(var j = 0; j < intentLv; j++){ suffix = suffix + indent; } rtn = rtnChr; } if (c == "}" || c == "]"){ prefix = rtnChr; intentLv = intentLv - 1; blockType.pop(1); } if (c == ","){ rtn = rtnChr; for(var j = 0; j < intentLv; j++){ suffix = suffix + indent; } } if (c == ":"){ c = " : "; } } }else{ if (quoteType.length > 0 && c == quoteType[quoteType.length - 1]){ innerFlg = false; } } if (prefix != ""){ for(var j=0; j < intentLv; j++){ prefix = prefix + indent; } } var line = prefix + c + rtn + suffix; if (preChr == "" && line.substring(0, 1) == rtnChr){ line = line.substring(1); } editJson = editJson + line; preChr = line.substring(line.length - 1, line.length); } SelectAll(0); InsText(editJson + rtnChr);
これをマクロとして登録すれば良い。
サクラエディタのマクロの登録は、下記を参考に。。。
サクラエディタで snakecase ⇔ camelcase - Oboe吹きプログラマの黙示録