Я застрял с библиотекой Json.NET и ее методом DeserializeObject. В документации не совсем понятно, что здесь может происходить, поэтому я был бы признателен, если бы кто-нибудь объяснил, как добиться десериализации JSON в список объектов пользователя.
Я пытаюсь десериализовать этот JSON
[
{"userid":"0",
"listid":1,
"lastname":"Mann",
"inplace":true,
"xpos":428,
"ypos":111
},
{"userid":"1",
"listid":1,
"lastname":"Parker",
"inplace":true,
"xpos":334,
"ypos":154
},
{"userid":"2",
"listid":1,
"lastname":"Terry",
"inplace":true,
"xpos":513,
"ypos":160
}
]
в объект пользователя
[JsonObject(MemberSerialization.OptIn)]
public class User
{
[JsonProperty(PropertyName = "userid")]
public string userid { get; set; }
[JsonProperty(PropertyName = "listid")]
public int listid { get; set; }
[JsonProperty(PropertyName = "lastname")]
public string lastname { get; set; }
[JsonProperty(PropertyName = "inplace")]
public bool inplace { get; set; }
[JsonProperty(PropertyName = "xpos")]
public int xpos { get; set; }
[JsonProperty(PropertyName = "ypos")]
public int ypos { get; set; }
public User()
{
}
}
с использованием
List<User> users = JsonConvert.DeserializeObject<List<User>>(jsonUsers);
безуспешно. Ни ошибок, ни пользователей. JsonConvert.DeserializeObject просто молча умирает.
Я попытался создать макет и выполнить SerializeObject и DeserializeObject с этой строкой JSON, но с тем же результатом, без ошибок, без результатов.
Я даже пытаюсь передать настройки сериализатора, чтобы понять, что не так, но без ошибок.
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Error += delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args) {
errorList.Add(args.ErrorContext.Error.Message);
};
List<User> users = JsonConvert.DeserializeObject<List<User>>(jsonUsers, settings);
Когда я пытаюсь увидеть, что происходит во время десериализации, я замечаю, что контекст не инициализирован?!
public class User
{
...
[OnDeserializing]
internal void OnDeserializing(StreamingContext context) {
}
}
Что я здесь делаю неправильно? И как я могу десериализовать это в список пользователей?