使用json.net映射未知属性

时间:2016-06-11 18:15:58

标签: c# json json.net

我正在使用lib:Json.NET。 我有一个带有以下数据的json文件

{
"Product": 
  {
    "random Key1": "some text",
    "random Key2": "some text",
    "random Key3": "some text"
  },
"TestSequence":
 {
    "random Key4": "Some text"
 }
}

我可以反序列化json文件,但我无法将json属性映射到类属性

 public class Product
    {
        [JsonExtensionData]
        private IDictionary<string, JToken> _additionalData { get; set; }
    }
   public class MyData
    {
        public Product Product { get; set; }
    }
    ------main programme ----
    using (StreamReader r = new StreamReader(@"\Base File\Base.json"))
        {
            json = r.ReadToEnd();
            MyData invoice = JsonConvert.DeserializeObject<MyData>(json);

            string result = JsonConvert.SerializeObject(invoice);
        }

如何在我的代码中访问“随机Key1”属性的值?

1 个答案:

答案 0 :(得分:0)

一种可能性是使用普通词典:

public class MyData
{
    public IDictionary<string, string> Product { get; set; }
}

然后一旦反序列化,就可以循环遍历所有键和值:

var invoice = JsonConvert.DeserializeObject<MyData>(json);
foreach (var item in invoice.Product)
{
    Console.WriteLine("key: {0}, value: {1}", item.Key, item.Value);
}

当然,为了直接访问值,您可能需要知道字典的工作方式:

Console.WriteLine(invoice.Product["random Key2"]);