如何將包含具有固定模式的值數(shù)組的對(duì)象反序列化為強(qiáng)類型數(shù)據(jù)類?我在查找以特定格式反序列化某些JSON數(shù)據(jù)的干凈(盡可能)方法時(shí)遇到了一些麻煩。我想將數(shù)據(jù)反序列化為強(qiáng)類型數(shù)據(jù)對(duì)象類,關(guān)于此的具體細(xì)節(jié)非常靈活。以下是數(shù)據(jù)的示例:{
"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"]
}}我不確定的具體部分是:球員的集合會(huì)被視為字典嗎?用戶名可以作為鍵,但是值會(huì)讓我失望,因?yàn)樗鼘⑹亲址驼麛?shù)值的混合集合。玩家完全由未命名的值組成。我?guī)缀蹩偸鞘褂靡衙麑傩院椭档腏SON數(shù)據(jù)(例如,最頂層的timestamp,total_players等)假設(shè)我有一個(gè)這樣的頂級(jí)課程: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; }}鑒于它基本上是用戶名作為鍵的鍵/值,并且值是混合整數(shù)和字符串的集合,Player對(duì)象會(huì)是什么樣子?每個(gè)玩家元素的數(shù)據(jù)總是以相同的順序,所以我知道集合中的第一個(gè)值是他們的UniqueID,第二個(gè)值是玩家描述等。我希望玩家類是這樣的: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這是一個(gè)非常簡單的事情,這就是為什么我想避免我對(duì)如何實(shí)現(xiàn)這一點(diǎn)的任何想法。我想出的將是不優(yōu)雅的,并且在序列化過程中可能在某種程度上容易出錯(cuò)。編輯以下是使用snow_FFFFFF建議的過去作為JSON類時(shí)生成的類: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數(shù)據(jù)反序列化為List,其中Player1Username是Player對(duì)象上的簡單字符串屬性。至于混合字符串和整數(shù)的集合,我相信我可以將它們放到Player對(duì)象的各個(gè)屬性中而不會(huì)出現(xiàn)問題。
3 回答

紫衣仙女
TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
一個(gè)好的入門方法是讓visual studio根據(jù)JSON生成你的類。打開一個(gè)空白的類文件,然后轉(zhuǎn)到EDIT - > PASTE SPECIAL - > PASTE JSON As CLASSES。
這將生成一個(gè)包含必要類的文件,以序列化/反序列化您的JSON。
- 3 回答
- 0 關(guān)注
- 472 瀏覽
添加回答
舉報(bào)
0/150
提交
取消