如何获取令牌的名称

时间:2012-03-30 16:33:26

标签: json c#-4.0 json.net

我需要解析看起来如下的json文件:

{"20120101":{"Jeff":{"Status":"Sleepy", "Weight":212}, "Cathy":{"Status":"Angry", "Weight":172}}
{"20120102":{"Jeff":{"Status":"Alert", "Weight":207}, "Cathy":{"Status":"Sick", "Weight":168}}

我无法找到从json中提取日期(20120101和20120102)和名字(Jeff和Cathy)的方法。我的尝试如下:

   private void LoadFile(string fileName)
    {
        var json = File.ReadAllText(fileName);
        JObject days = JObject.Parse(json);
        foreach (var dayAsObject in days)
        {
            var day = (JToken) dayAsObject;
            var a = day.Root.ToString();
            var t = day.ToString();
            var z = day.First;
            Console.WriteLine(day+t+z+a);
        }

1 个答案:

答案 0 :(得分:1)

更好的配方json看起来像

 {"20120101":{ "name":"Jeff", "Status":"Sleepy", "Weight":212}, { "name":"Cathy", "Status":"Angry", "Weight":172}}

然后很容易得到一天[“名字”]。我建议修改你的json。如果你绝对不能,我认为你正在寻找的属性是PropertyName。

我倾向于使用内置的System.Web.Script.Serialization JSON库。如果你不需要做一些花哨的东西,它对动态对象类型很有效。