我有以下JSON-String:
{"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-Manipulation
string tagName = tag.ToString().Split(':')[0].Replace("\"", string.Empty);
但必须有更好的,更像OOP的方式
答案 0 :(得分:1)
我使用此
获得了结果 foreach (var tag in objectContainer)
{
var property = tag.Path.Substring(tag.Path.IndexOf(".") + 1);
Console.WriteLine(property);
}
}
Console.ReadLine();
}
答案 1 :(得分:1)
如果明确地将"object"
对象作为JObject
,则可以访问Key
内每个成员的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
公开了一个IEnumerable.GetEnumerator
的实现,它返回KeyValuePair<string, JToken>
个包含对象中每个属性的名称和值的内容。