我正在为一个 RESTful JSON API 编写 C# 封装,并使用 Json.NET 将传入的 json 反序列化为强类型对象。但是,一些传入的 json 属性非常动态,将是具有不同数量和类型属性的一些 json 对象。我的当前解决方案是,将动态 json 属性映射到我的 C# 类中的 Dictionary<string, object>
(嵌套字典),并编写自定义 JsonConverter 将动态 json 转换为嵌套字典。我的类看起来像这样:
public class Item
{
[JsonProperty("item_id")]
public int ItemId { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
//Property to map dynamic json object
[JsonProperty("data")]
public Dictionary<string, object> Data { get; set; }
}
它是成功的。
问题在于,对于最终用户来说,从这个嵌套字典中访问数据非常困难,我们甚至无法通过在Visual Studio中调试来查看数据的结构。现在我计划使用 JObject 或 JArray 代替嵌套字典。这样,我们只需调用ToString方法(将输出原始JSON数据作为字符串),就能看到数据的结构,而且这些类型都具有LINQ支持,使用户可以轻松地访问数据。
考虑到 JObject 和 JArray 类型都依赖于第三方库(无论如何,Json.NET 是我的库的一个依赖项,因为我正在使用它进行 JSON 序列化)。那么这种做法是否可行?或者还有其他方法吗?