C# 解析jtoken以提取值

C# 解析jtoken以提取值,c#,json,C#,Json,我在C中有一个JSON对象作为字符串。我可以将它解析为JObject。像这样: JObject resultObject = JObject.Parse(responseText); resultObject的值如下所示: "mappings": { "car": { "properties": { "manufacturer": { "type": "text", {...}

我在C中有一个JSON对象作为字符串。我可以将它解析为JObject。像这样:

JObject resultObject = JObject.Parse(responseText);
resultObject的值如下所示:

"mappings": {
    "car": {
        "properties": {
            "manufacturer": {
                "type": "text",
                {...}
            },
            "model": {
                "type": "text",
                {...}
            },
            "production": {
                "type": "date",
                 {...}
            }
        }
    }
}
class MyProperty {
   string Name { get; set;}
   string Type { get; set;}
}   
我想以某种方式将其映射为如下格式:

"mappings": {
    "car": {
        "properties": {
            "manufacturer": {
                "type": "text",
                {...}
            },
            "model": {
                "type": "text",
                {...}
            },
            "production": {
                "type": "date",
                 {...}
            }
        }
    }
}
class MyProperty {
   string Name { get; set;}
   string Type { get; set;}
}   
是否有一种方便的方法可以迭代所有找到的属性,将名称和类型提取到一个简单的类(如MyProperty)中

编辑

这就是我到目前为止的想法:

请帮我找到一个更好更优雅的方式

string type = "car"

JObject properties = resultObject["mappings"][type]["properties"].Value<JObject>();
List<string> keys = properties.Properties().Select(p => p.Name).ToList();
// keys: ["manufacturer", "model", "production"]

foreach (string key in keys) {
    string currType = properties[key]["type"].Value<string>();

    MyProperty mypropObject = new MyProperty(){ Name = key, Type = currType };
}

我想你正在考虑使用反射来实现这一点,你有没有办法让Json以不同的格式出现,这样你就有了一个可以迭代的属性数组?我是从HTTP请求中获取Json的,我无法控制该格式。在这种情况下,你可以使用JObject resultObject原样,从car对象获取IEnumerable,然后使用简单属性。选择p=>new MyProperty{Name=p.Name,Type=p.Type}获取IEnumerable