2016-06-11 58 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"]);