これが私が本番コードで使用する1つの方法です。それは完璧ではないかもしれませんが、それは仕事を成し遂げます。
using using System.Web.Script.Serialization;
// .....
public object GetJson(string url)
{
var json = Get(url); // I have code that makes this work, it gets a JSON string
try
{
var deserializer = new JavaScriptSerializer();
var result = deserializer.DeserializeObject(json);
return result;
}
catch (ArgumentException e)
{
// Error handling....
}
}
返されるオブジェクトは、JSONの構造に応じて、一般的なMap、Listなどになります。予想される構造がわかっている場合、これは、カスタマイズされたパーサーやターゲットオブジェクトタイプを記述しなくても非常に役立ちます。
次に、たとえば、マップのキーを列挙して、変化するキーを見つけることができます。ラッパーまたは変換は、アプリケーション層の残りの部分に一貫したAPIを提供します。何かのようなもの:
public class Order {
public string OrderNum { private set; get; }
public string ShortDesc { private set; get; }
public string Desc { private set; get; }
public static Order FromJson(object jsonResult)
{
var m = jsonResult as Map<string, object>;
// Handle errors, but I am not
var firstPair = m.First();
var detail = firstPair.Value as Map<string, object>;
var dummy = new Order()
{
OrderNum = firstPair.Key,
ShortDesc = detail["short_description"].ToString();
Desc = detail["detail_description"].ToString();
}
return dummy;
}
}