json_maker
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆JSONを簡単に書くツールをつくった
JSONってXMLに比べ簡単に書けますし便利ですよね
ですが
まだ書くのが面倒なんです
{}とか[]とか
文字列に""つけるのすら面倒です
ということで楽にJSONを書くためのツールを作ってみました
json_maker
yamlっぽい書き方で書きます
1行に1データが基本になります
インデントは見た目ではなく「数」を見るのでタブと半角スペースが混ざっているとわかりづらくなります
タブも半角スペースも同じ1文字扱いです
末尾の改行に注意してください
改行があると空行が最後に存在する扱いになります
文字列は「"」なしでかけます
勝手に追加してくれます
ただし エスケープはしないので自分で\"など書いておかないとダメです
階層構造はインデントで表します
11,12は同じ配列で21は別の配列に入れたいのに
そういうときは空行を入れます
空行にもインデントがあるなしに意味があります
上の例で12の次の空行に12と同じレベルのインデントがあるとこうなります
階層構造にしたいときは「:」の右側がない状態にして次の行のインデントを追加します
「:」の右側に何も書かないときに空文字列扱いにはならないです
インデントを戻すと階層も戻ります
インデントがあれば要素1つでも配列またはオブジェクトになります
valueがただの値ならa:1のようにインデントなしにしないといけません
配列内のオブジェクトはキーも1レベルインデントを追加
これだとダメです
オブジェクトでは「[:]」と書くことで「:」を表します
最初に「:」が見つかってからはそのまま出力されるのでkey側では「[:]」とかく必要がありますが value側ではそのまま「:」と書きます
変換ツール自体はエラーを出さないです(JavaScriptらしく)
ですが 出てきたJSONにエラーがあることがあるので その場合は「エラーがあります」と表示するようにしています
ですが
まだ書くのが面倒なんです
{}とか[]とか
文字列に""つけるのすら面倒です
ということで楽にJSONを書くためのツールを作ってみました
json_maker
書き方
JSONとは違い改行とインデントに意味がありますyamlっぽい書き方で書きます
1行に1データが基本になります
インデントは見た目ではなく「数」を見るのでタブと半角スペースが混ざっているとわかりづらくなります
タブも半角スペースも同じ1文字扱いです
1つだけのデータ
1行だけならそのままの値になります末尾の改行に注意してください
改行があると空行が最後に存在する扱いになります
true
true
文字列は「"」なしでかけます
勝手に追加してくれます
ただし エスケープはしないので自分で\"など書いておかないとダメです
aaa
"aaa"
""の追加がないのは数字とtrueとfalseとnullです配列
同じインデントで複数行が続くと配列です1
2
3
[1,2,3]
階層構造はインデントで表します
1
11
12
13
2
21
22
3
4
41
411
4111
412
5
[1,[11,12,13],2,[21,22],3,4,[41,[411,[4111],412]],5]
11,12は同じ配列で21は別の配列に入れたいのに
1
11
12
21
[1,[11,12,21]]
になってしまいますそういうときは空行を入れます
1
11
12
21
[1,[11,12],[21]]
できました!空行にもインデントがあるなしに意味があります
上の例で12の次の空行に12と同じレベルのインデントがあるとこうなります
1
11
12
21
[1,[11,12,"",21]]
空文字になってしまいますオブジェクト
オブジェクトは「:」で書きますa:1
b:2
c:3
{"a":1,"b":2,"c":3}
階層構造にしたいときは「:」の右側がない状態にして次の行のインデントを追加します
a:1
b:
c:1
{"a":1,"b":{"c":1}}
「:」の右側に何も書かないときに空文字列扱いにはならないです
a:1
b:
c:2
// ERROR!
{"a":1,"b":,"c":2}
インデントを戻すと階層も戻ります
aa:1
ab:
ba:12
bb:23
ac:3
{"aa":1,"ab":{"ba":12,"bb":23},"ac":3}
配列とオブジェクトが混ざってるとき
オブジェクトの中の配列はほぼそのままインデントがあれば要素1つでも配列またはオブジェクトになります
valueがただの値ならa:1のようにインデントなしにしないといけません
a:1
b:
x
y
c:
z
d:0
{"a":1,"b":["x","y"],"c":["z"],"d":0}
配列内のオブジェクトはキーも1レベルインデントを追加
1
a:1
b:
2
[1,{"a":1,"b":[2]}]
これだとダメです
1
a:1
// ERROR!
[1,"a":1]
「:」を書きたいとき
配列の中では記号は普通に文字列扱いです1
2
a
b
,
.
;
:
[1,2,"a","b",",",".",";",":"]
オブジェクトでは「[:]」と書くことで「:」を表します
最初に「:」が見つかってからはそのまま出力されるのでkey側では「[:]」とかく必要がありますが value側ではそのまま「:」と書きます
a:1
a[:]b:c
a[[:]][:]:c
abc:::1
abcd:[:]
{"a":1,"a:b":"c","a[:]:":"c","abc":"::1","abcd":"[:]"}
使い方
ページの左側に入力して右下の「convert」を押すかCtrl+Enterを入力すれば変換してくれます変換ツール自体はエラーを出さないです(JavaScriptらしく)
ですが 出てきたJSONにエラーがあることがあるので その場合は「エラーがあります」と表示するようにしています