C# 反序列化未知Json类型Newtonsoft
我有一个带有未知键的json结构。 以下是一个随机示例:C# 反序列化未知Json类型Newtonsoft,c#,json,C#,Json,我有一个带有未知键的json结构。 以下是一个随机示例: { "menu": { "header": "xProgress SVG Viewer", "items": [ { "id": "Open" }, { "id": "OpenNew", "label": "Open New"
{
"menu": {
"header": "xProgress SVG Viewer",
"items": [
{
"id": "Open"
},
{
"id": "OpenNew",
"label": "Open New"
}
}
现在我想读取所有数据,并对每个值执行一些操作。
我发现了两种方法,但都不容易处理:
object obj = JsonConvert.DeserializeObject(data);
foreach (var prop in obj.GetType().GetProperties())
if (prop.GetIndexParameters().Count() == 0)
//Access with 'prop.Name' and 'prop.GetValue(obj, null)'
//But Iam not able to handle this correctly
及
string.Format(“{0}-{1}-{2}”、reader.TokenType、reader.ValueType、reader.Value)
处理这些数据非常复杂(也可以使用数组)。有什么想法吗?你试过使用
dynamic
对象吗?第三种方法是dynamic
——但我不知道关键点。我尽量避免动态(糟糕的性能),然后使用JObject。在文档中,当您在案例中使用dynamic
时,您是否注意到性能问题<代码>动态使用反射(作为第二种方法)。但是缓存的好处是
using (var reader = new JsonTextReader(new System.IO.StringReader(data)))
while (reader.Read())
//Access with 'reader.Value'
//Complex - next picture