c# - 如何反序列化这个特定的 json 字符串?
问题描述
我正在尝试使用 Newtonsoft Json 反序列化以下 json 字符串。我能够成功获取字符串,但是当我尝试使用时JsonConvert.DeserializeObject<ServerList>(response, settings);
,尝试捕获失败。
[
{"endpoint":"127.0.0.1","id":6,"identifiers":["steam:","license:","xbl:","live:","discord:"],"name":"Blurr","ping":160},
{"endpoint":"127.0.0.1","id":7,"identifiers":["steam:","license:","xbl:","live:","discord:"],"name":"Knight","ping":120}
]
我相信我的问题是因为玩家阵列未命名。
我已经为 Users var 尝试过 [JsonProperty("")] 和 [JsonProperty],我也尝试过使用 List 和 Array 而不是 IList。
这是对象。这可能是完全错误的,我尝试了很多方法。
public class ServerList
{
// I have tried many ways of doing this array/list. This is just the latest way I tried.
[JsonProperty]
public static IList<Player> Users { get; set; }
}
public class Player
{
[JsonProperty("endpoint")]
public static string Endpoint { get; set; }
[JsonProperty("id")]
public static string ServerId { get; set; }
[JsonProperty("identifiers")]
public static IList<string> Identifiers { get; set; }
[JsonProperty("name")]
public static string Name { get; set; }
[JsonProperty("ping")]
public static int Ping { get; set; }
}
我期望得到一个“ServerList”对象,其中包含连接到服务器的所有玩家的列表。
问你需要的任何问题,我不经常使用这种格式的 json。先感谢您!
错误:从 JsonReader 读取 JObject 时出错。当前 JsonReader 项不是对象:StartArray。路径'',第 1 行,位置 1。
解决方案
最简单的方法:你的 json 是一个数组,所以反序列化为一个数组:
JsonConvert.DeserializeObject<Player[]>(response,settings);
如评论中所述, 上的属性Player
不应该是静态的。
如果您坚持使用与您发布的内容类似的对象结构,即具有Users
属性的对象,即使它不存在于 JSON 中,也可以通过实现自定义 JSON 转换器来实现。这里有一篇带有示例的文章:https ://www.jerriepelser.com/blog/custom-converters-in-json-net-case-study-1/
然而; 我建议坚持使用 json 中存在的类型,也许稍后再构造对程序中的模型有意义的对象。这样,您反序列化的内容对您获得的 json 是真实的,但不会牺牲您想要的模型:
var players = JsonConvert.DeserializeObject<Player[]>(response,settings);
var serverList = new ServerList {Users = players};
推荐阅读
- java - 如何在 Java 中将 Unicode 转换为字节?
- matlab - 如何计算双二阶滤波器方程的输出?
- python - 以通用方式使用 Selenium 和 Python 解析表数据
- c# - 哪个更快更高效:Convert.ToInt32() 还是三元运算符?
- ios - 使用 Bitrise,是否可以在 `info.plist` 文件中创建自定义变量替换?
- python - 为 viewset get 方法创建具有多个过滤器的新视图集
- azure-devops - 在 Azure Pipelines 上运行 CUDA 单元测试
- python - Keras 中的多维回归网络迅速趋于 0
- css - 悬停图像填充上的文本
- python - 手动功能对 3 个数字进行排序,从低到高