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