Я застрял с библиотекой 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, но с тем же результатом, никакими ошибками, никакими результатами.
Я даже пытаюсь передать serializersettings чтобы se что не так, но без ошибок также
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) {
}
}
Что я делаю неправильно здесь? И как я могу десериализовать это в список Пользователей?
Я обнаружил, в чем проблема. JSon.NET десериализовал мои целые числа из JSON в Int64 вместо Int32, поэтому вместо int я поставил long, и все работало так, как должно было в первую очередь.
Есть ли способ указать, что я хочу, чтобы эти свойства десериализовались в int?