如何將包含具有固定模式的值數組的對象反序列化為強類型數據類?我在查找以特定格式反序列化某些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。
- 3 回答
- 0 關注
- 469 瀏覽
添加回答
舉報
0/150
提交
取消