这是我在生产代码中使用的一种方式。它可能并不完美,但它可以完成工作。
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....
}
}
您收到的对象将是通用 Map、List 或其他任何取决于 JSON 结构的对象。如果您知道预期的结构,这将非常有用,无需编写自定义解析器或目标对象类型。
然后,您可以枚举 Map 的键,例如,查找您的变化的键。然后,包装器或转换将为应用程序层的其余部分提供一致的 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;
}
}