使用json.net映射未知属性
问题描述:
即时通讯工作与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“属性在我的代码?
答
一种可能性是使用普通的字典:
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"]);
反序列化为字典(属性名称将成为键)或实现自定义转换器 – Plutonix