C# 在C中从JSON列表获取属性/对象名#
我有以下JSON字符串:C# 在C中从JSON列表获取属性/对象名#,c#,json,json.net,C#,Json,Json.net,我有以下JSON字符串: {"object":{"4711":{"type":"volume","owner":"john doe","time":1426156658,"description":"Jodel"},"0815":{"type":"fax","owner":"John Doe","time":1422900028,"description":"","page_count":1,"status":"ok","tag":["342ced30-7c34-11e3-ad00-002590
{"object":{"4711":{"type":"volume","owner":"john doe","time":1426156658,"description":"Jodel"},"0815":{"type":"fax","owner":"John Doe","time":1422900028,"description":"","page_count":1,"status":"ok","tag":["342ced30-7c34-11e3-ad00-00259073fd04","342ced33-7c34-11e3-ad00-00259073fd04"]}},"status":"ok"}
该数据的可读屏幕截图:
我想得到数据的值“4711”和“0815”。我使用以下代码遍历数据:
JObject tags = GetJsonResponse();
var objectContainer = tags.GetValue("object");
if (objectContainer != null) {
foreach (var tag in objectContainer) {
var property=tag.HowToGetThatMagicProperty();
}
}
在位置“var property=“
我想得到值“4711”
我可以用字符串操作
string tagName = tag.ToString().Split(':')[0].Replace("\"", string.Empty);
但是肯定有更好的、更像面向对象的方法我用这个方法得到了结果
foreach (var tag in objectContainer)
{
var property = tag.Path.Substring(tag.Path.IndexOf(".") + 1);
Console.WriteLine(property);
}
}
Console.ReadLine();
}
如果将“object”
对象显式地作为JObject
获取,则可以访问JObject
中每个成员的键
属性。目前,objectContainer
是一个JToken
,不够具体:
JObject objectContainer = tags.Value<JObject>("object");
foreach (KeyValuePair<string, JToken> tag in objectContainer)
{
var property = tag.Key;
Console.WriteLine (property); // 4711, etc.
}
JObject objectContainer=tags.Value(“对象”);
foreach(objectContainer中的KeyValuePair标记)
{
var属性=tag.Key;
Console.WriteLine(属性);//4711等。
}
JObject
公开了IEnumerable.GetEnumerator
的实现,该实现返回包含对象中每个属性的名称和值的KeyValuePair
s
示例:您可以直接反序列化到所述对象的模型中,或者如果在模型视图控制器中,您可以使用模型的参数执行JsonResult,以实际将信息传递到。@Greg No MVC(但我理解您的意思):)因为我只对单个字符串值感兴趣,所以我不想为响应创建对象。这类似于OP使用字符串操纵的方法,在编写我的回答时没有意识到它已被编辑(对此我很抱歉):)但是您的答案“稍微”好一点,因为它没有使用