DynamicJsonでJSONでない文字列をパースしたときの処理
DynamicJsonという、事前にクラスを定義せずにJSONを読み込める便利なライブラリがある。
DynamicJsonでJSONでない文字列をパースしたときの処理をどうするか、という話。
C#でJSONをパースしたいときというのは、だいたいWebAPIを叩いたときのレスポンスがJSONで、 それをパースするときかと思う。
必ずJSONが返ってくるのなら何も問題はないが、 APIを正しく叩けてない場合などにたまにJSONでないときがある。*1
その場合に、以下のように単純にDynamicJsonでパースすると例外を吐く。
string incorrectJsonString = @"NOT JSON STRING"; var missJson = DynamicJson.Parse(incorrectJsonString);
型 'System.Xml.XmlException' のハンドルされていない例外が System.Runtime.Serialization.dll で発生しました 追加情報:予期しない文字 'J' が見つかりました。
パースするまでは正しいJSON文字列かは当然わからないので、 例外処理を書いてやる必要がある。
System.Xml.XmlException を catch する。
string incorrectJsonString = @"NOT JSON STRING"; try { var missJson = DynamicJson.Parse(incorrectJsonString); } catch (System.Xml.XmlException ex) { Console.WriteLine(ex.Message); }