Skip to content

Instantly share code, notes, and snippets.

@unnonouno
Created December 13, 2012 06:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save unnonouno/4274568 to your computer and use it in GitHub Desktop.
Save unnonouno/4274568 to your computer and use it in GitHub Desktop.
json_cast注意点

json_cast注意点

挙動

json_parser

stringをjsonに変換する。 lexical_cast<json>(string)もこれを使っている。 synataxレベルのチェックしかしない。

  • jsonとして完結していないと、 pfi::lang::end_of_data で怒られる。特に空文字列を渡してもこれが出るため、かつ原因がわかりにくいので、空文字列か否かの判定は個別にやったほうがベター
  • 途中で変な文字を見つけると pfi::lang::parse_error で怒られる。パースに失敗した行番号と文字数は取得できる。
  • 数値の処理なども自前でやっており、間違っているときは同様に pfi::lang::parse_error で怒られる。

json_cast

jsonを特定の型に変換する。 via_jsonもこれを使っている。 型情報レベルのセマンティックのチェックを行う。

  • 型が合わないと json_bad_cast が発生する
  • どのフィールドでエラーが起きたかの情報が上がってこない(技術的にはできるはず)

おすすめの使い方?

config_t conf = json_cast<config_t>(lexical_cast<json>(input_string));

2つの処理は分けてもよい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment