今回は、System.Web.Extensionsに存在しているJavaScriptSerializerを利用して、JSONを変換してみます。
JSONを変換するサンプルソースは以下のようになります。
今回は、Amazon Rekognitionのdetect-textの結果をオブジェクトに変換しています(TypeがLINEのDetectedTextを抽出しています)。
JavaScriptSerializer serializer = new JavaScriptSerializer();
// JSONを対象オブジェクトに変換する
Dictionary<string, object> detect =
serializer.Deserialize<Dictionary<string, object>>(File.ReadAllText(args[0]));
List<string> outputLines = new List<string>();
// 変換結果のうち、LINEのみ出力する。
foreach (object value in detect.Values)
{
ArrayList valueList = value as ArrayList;
foreach (object valueObj in valueList)
{
Dictionary<string, object> valueDic = valueObj as Dictionary<string, object>;
if (!valueDic.ContainsKey("Type"))
{
continue;
}
if ("LINE".Equals(valueDic["Type"].ToString()))
{
outputLines.Add(valueDic["DetectedText"].ToString());
}
}
}
File.WriteAllLines(args[1], outputLines.ToArray());
今回はDeserializeメソッドでDictionaryに変換していますが、専用クラスを作成すればそちらを指定することができます。
また、そのままObjectで受け取りたいのであれば、DeserializeObjectメソッドを利用することもできます。