Dotnet核心 - &gt; Newtonsoft DeserializeObject <t> with Dynamic Child

时间:2017-03-03 04:18:45

标签: c# json.net .net-core

我试图将JSON API响应反序列化为一个主要定义的对象,但它有一个动态的部分。在dotnet核心中有一个很好的方法来处理这个问题。我发现答案要求我将根对象定义为动态,然后将其解析或反序列化,但我希望将我的根对象保持为定义,并将子部分保持为动态。

以下是我在stackoverflow上找到的不符合我要求的示例:

dynamic d = JObject.Parse("{number:1000, str:'string', array: [1,2,3,4,5,6]}");

var product = new { Name = "", Price = 0 };
dynamic jsonResponse = JsonConvert.Deserialize(json, product.GetType());

dynamic jsonResponse = JsonConvert.DeserializeObject(json);
Console.WriteLine(jsonResponse["message"]);

我对类/数据模型定义的含义:

public class RootObject
{
    public int Id { get; set; }
    public DefinedData DefinedData { get; set; }
    public DynamicData DynamicData { get; set; } // This one is dynamic
    public DateTime DateCreated { get; set; }
    public DateTime LastUpdated { get; set; }
    public bool Enabled { get; set; }
}

JSON的DefinedData部分被定义为DefinedData类/模型,但DynamicData基本上是关于依赖于事物的根对象的杂项信息。如果我实际定义了所有选项,那么将有数千个选项,这将是每天维护添加新的可能性,而99%的根对象只有大约10个适用于它们。

我的最终问题是如何将API调用中的JSON字符串数据反序列化为C#动态子类,然后引用该数据。类似的东西:

Console.WriteLine(rootObject.DynamicData["dynamicField"];

Console.WriteLine(rootObject.DynamicData.dynamicField);

0 个答案:

没有答案