从C#中的JSON-List获取属性/对象名

时间:2015-03-17 15:25:06

标签: c# json json.net

我有以下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"}

该数据的人类可读屏幕截图:

JSON-Data

我想获得该数据的值“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的方式

2 个答案:

答案 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属性。目前objectContainerJToken,这还不够具体:

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>个包含对象中每个属性的名称和值的内容。

示例: https://dotnetfiddle.net/QbK6MU