序列化 – JSon.NET DeserializeObject>不返回列表也不给出错误

我遇到了Json.NET库及其DeserializeObject方法.文档对于这里可能发生的事情并不十分清楚,所以如果有人能够解释如何将 JSON反序列化为User对象列表,我将不胜感激.

我正在尝试反序列化这个JSON

[
    {"userid":"0","listid":1,"lastname":"Mann","inplace":true,"xpos":428,"ypos":111
    },{"userid":"1","lastname":"Parker","xpos":334,"ypos":154
    },{"userid":"2","lastname":"Terry","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只是地死去.

我尝试创建模型并使用该JSON字符串执行SerializeObject和DeserializeObject,但结果相同,没有错误,没有结果.

我甚至尝试传递serializersettings以便找出错误但没有错误

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,所以我把它放在long而且一切都按照它应该首先运行.

有没有办法指定我希望该属性反序列化为int?

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...