このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

謝罪と訂正:JSONの構文を間違えていた

2006-03-18のコメント欄において、dk2さんにご指摘いただいたのですが、僕はJSONの構文を間違えていました。自分だけ思い違いしていたのならまだいいのだけど、間違えたJSONデータの事例を垂れ流してしまったよ、ごめんなさい。

勘違いしていた箇所は、名前・値ペアの名前のところで、名前も二重引用符で囲まないとダメです。僕は裸の名前を使っていました。例えば、name:"板東トン吉"はダメで、"name":"板東トン吉"が正しい構文となります。

「セキュリティの観点からは、JSONパーザーを使ったほうがいい」とか言いながら、僕自身はevalで済ませてたいので、裸の名前もエラーにならずにいたんですね。二重引用符は「用心のため」かと思っていました。どうにも迂闊でした。申し訳ありません。

念のため、JSONの構文を普通の(割とよくある形の)BNFで書いておきます。1つの定義を複数行で書くので、定義の最後にセミコロンを付けています


object ::=
'{' '}'
| '{' members '}' ;

members ::=
string ':' value
| members ',' string ':' value ;

array ::=
'[' ']'
| '[' elements ']' ;

elements ::=
value
| elements ',' value ;

value ::=
string
| number
| object
| array
| ('true' | 'false')
| 'null' ;

membersの定義に注目。stringは二重引用符を使った文字列リテラル、numberは整数または実数(浮動小数点数リテラルです。