2009年1月19日月曜日

JSONとCL (その3)

ああ、わかった。yasonのskip-whitespaceの問題ではない。

\\nなどがJSONの文字リテラルになるのは、JSONの文字列の中なのだ。だから

"\\n"

は、json:parseに対して\nというシンボルを与えているにすぎない(シンボルリテラルということ)。これがjson:parseにとってNewlineの意味になるのは、

"\"\\n\""

においてだ。なので、json:parseに与えられるストリームや文字列として改行コードをスキップしますよ、というのは、JSONの外として与えるべきであり、それは、

(json:parse (format nil "{ \"input_01\" : 123,~% \"input_02\" : \"hoge\" }"))

などであり、これは

;; => #<EQUAL hash-table with 2 entries @ #x10013ae732>

と正しくskip-whitespaceされてエラーにならない。

なお、ここで言っているJSONの意味とはCLオブジェクトによる意味論である。

こつこつ。

0 件のコメント: