Как сериализовать \ десериализовать свойство, если имя свойства зависит от данных - PullRequest
4 голосов
/ 22 февраля 2011

Я пытаюсь десериализовать следующий json (см. Ниже) (используя сериализатор json newtonsoft), и проблема в том, что переменная с именем "2010-12" явно зависит от возвращаемых данных - она ​​представляет месяц и следующий месяц значение изменится на «2010-01».

Любые идеи о том, как я мог бы справиться с этим со следующим классом?

[JsonObject(MemberSerialization.OptIn)]
public class Crimes
{
   [JsonProperty()]
   public Month Month { get; set; }
}

Пример экземпляра JSON:

{
    "commentary": null,
    "crimes": {
        "2010-12": {
            "anti-social-behaviour": {
                "crime_rate": "0.46",
                "crime_level": "average",
                "total_crimes": 74
            },
            "other-crime": {
                "crime_rate": "0.35",
                "crime_level": "average",
                "total_crimes": 56
            },
            "all-crime": {
                "crime_rate": "1.12",
                "crime_level": "average",
                "total_crimes": 180
            },
            "robbery": {
                "crime_rate": "0.02",
                "crime_level": "above_average",
                "total_crimes": 3
            },
            "burglary": {
                "crime_rate": "0.14",
                "crime_level": "above_average",
                "total_crimes": 22
            },
            "vehicle-crime": {
                "crime_rate": "0.04",
                "crime_level": "average",
                "total_crimes": 7
            },
            "violent-crime": {
                "crime_rate": "0.11",
                "crime_level": "average",
                "total_crimes": 18
            }
        }
    }
}

1 Ответ

2 голосов
/ 23 февраля 2011

Я не знаком с десериализатором Newtonsoft, но, вообще говоря, я думаю, что нужно сделать, чтобы десериализовать свойство crime как словарь со строкой или ключом DateTime. Извините, я не могу точно сказать вам, как это сделать в Newtonsoft, но попробуйте разобраться в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...