2016-06-11 64 views
0

即时通讯工作与lib:Json.NET。 我有下面的数据使用json.net映射未知属性

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

json文件,我可以反序列化JSON文件,但JSON的性能如何访问的“i的值不能映射到一个类的属性

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“属性在我的代码?

+0

反序列化为字典(属性名称将成为键)或实现自定义转换器 – Plutonix

回答

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"]);