为了账号安全,请及时绑定邮箱和手机立即绑定

如何将包含具有固定模式的值数组的对象反序列化为强类型数据类?

如何将包含具有固定模式的值数组的对象反序列化为强类型数据类?

白衣非少年 2019-07-25 15:01:56
如何将包含具有固定模式的值数组的对象反序列化为强类型数据类?我在查找以特定格式反序列化某些JSON数据的干净(尽可能)方法时遇到了一些麻烦。我想将数据反序列化为强类型数据对象类,关于此的具体细节非常灵活。以下是数据的示例:{     "timestamp": 1473730993,     "total_players": 945,     "max_score": 8961474,     "players": {             "Player1Username": [             121,             "somestring",             679900,             5,             4497,             "anotherString",             "thirdString",             "fourthString",             123,             22,             "YetAnotherString"],         "Player2Username": [             886,             "stillAstring",             1677,             1,             9876,             "alwaysAstring",             "thirdString",             "fourthString",             876,             77,             "string"]         }}我不确定的具体部分是:球员的集合会被视为字典吗?用户名可以作为键,但是值会让我失望,因为它将是字符串和整数值的混合集合。玩家完全由未命名的值组成。我几乎总是使用已命名属性和值的JSON数据(例如,最顶层的timestamp,total_players等)假设我有一个这样的顶级课程:public class ScoreboardResults{     public int timestamp { get; set; }     public int total_players { get; set; }     public int max_score { get; set; }     public List<Player> players { get; set; }}鉴于它基本上是用户名作为键的键/值,并且值是混合整数和字符串的集合,Player对象会是什么样子?每个玩家元素的数据总是以相同的顺序,所以我知道集合中的第一个值是他们的UniqueID,第二个值是玩家描述等。我希望玩家类是这样的:public class Player{     public string Username { get; set; }     public int UniqueID { get; set; }     public string PlayerDescription { get; set; }     ....     ....     .... Following this pattern for all of the values in each player element    ....     ....}我确信使用JSON.NET这是一个非常简单的事情,这就是为什么我想避免我对如何实现这一点的任何想法。我想出的将是不优雅的,并且在序列化过程中可能在某种程度上容易出错。编辑以下是使用snow_FFFFFF建议的过去作为JSON类时生成的类:public class Rootobject{     public int timestamp { get; set; }     public int total_players { get; set; }     public int max_score { get; set; }     public Players players { get; set; }}public class Players{     public object[] Player1Username { get; set; }     public object[] Player2Username { get; set; }}我不清楚的是如何将“players”元素中的JSON数据反序列化为List,其中Player1Username是Player对象上的简单字符串属性。至于混合字符串和整数的集合,我相信我可以将它们放到Player对象的各个属性中而不会出现问题。
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

一个好的入门方法是让visual studio根据JSON生成你的类。打开一个空白的类文件,然后转到EDIT - > PASTE SPECIAL - > PASTE JSON As CLASSES。

这将生成一个包含必要类的文件,以序列化/反序列化您的JSON。


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 448 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信