Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化未知Json类型Newtonsoft_C#_Json - Fatal编程技术网

C# 反序列化未知Json类型Newtonsoft

C# 反序列化未知Json类型Newtonsoft,c#,json,C#,Json,我有一个带有未知键的json结构。 以下是一个随机示例: { "menu": { "header": "xProgress SVG Viewer", "items": [ { "id": "Open" }, { "id": "OpenNew", "label": "Open New"

我有一个带有未知键的json结构。 以下是一个随机示例:

{
    "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