加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:52:43 所属栏目:百科 来源:网络整理
导读:我遇到了Json.NET库及其DeserializeObject方法.文档对于这里可能发生的事情并不十分清楚,所以如果有人能够解释如何将 JSON反序列化为User对象列表,我将不胜感激. 我正在尝试反序列化这个JSON [ {"userid":"0","listid":1,"lastname":"Mann","inplace":true,"
我遇到了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?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读