Как получить имя токена - PullRequest
0 голосов
/ 30 марта 2012

Мне нужно проанализировать файлы json, которые выглядят следующим образом:

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

Я не могу найти способ извлечь даты (20120101 и 20120102) и имена (Джефф и Кэти) из моего json.Мои попытки выглядят следующим образом:

   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 Ответ

1 голос
/ 30 марта 2012

Лучше сформулированный JSON будет выглядеть как

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

Тогда очень легко получить день ["имя"]. Я бы предложил изменить ваш JSON. Если вы абсолютно не можете, я думаю, что вы ищете это PropertyName.

Я склонен использовать встроенную библиотеку System.Web.Script.Serialization JSON. Если вам не нужно делать причудливые вещи, это прекрасно работает с динамическим типом объекта.

...