gpt4 book ai didi

serialization - Json.NET DeserializeObject> 不返回列表也不给出错误

转载 作者:行者123 更新时间:2023-12-04 10:31:51 28 4
gpt4 key购买 nike

我被 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 只是默默地死去。

我尝试创建模型并使用该 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,一切都按原样运行。

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

关于serialization - Json.NET DeserializeObject<List<T>> 不返回列表也不给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2813350/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com