C# 在C中从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

我有以下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-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使用字符串操纵的方法,在编写我的回答时没有意识到它已被编辑(对此我很抱歉):)但是您的答案“稍微”好一点,因为它没有使用