stringをjsonに変換する。 lexical_cast<json>(string)もこれを使っている。 synataxレベルのチェックしかしない。
- jsonとして完結していないと、 pfi::lang::end_of_data で怒られる。特に空文字列を渡してもこれが出るため、かつ原因がわかりにくいので、空文字列か否かの判定は個別にやったほうがベター
- 途中で変な文字を見つけると pfi::lang::parse_error で怒られる。パースに失敗した行番号と文字数は取得できる。
- 数値の処理なども自前でやっており、間違っているときは同様に pfi::lang::parse_error で怒られる。
jsonを特定の型に変換する。 via_jsonもこれを使っている。 型情報レベルのセマンティックのチェックを行う。
- 型が合わないと json_bad_cast が発生する
- どのフィールドでエラーが起きたかの情報が上がってこない(技術的にはできるはず)
config_t conf = json_cast<config_t>(lexical_cast<json>(input_string));
2つの処理は分けてもよい。