我有一个Json字符串:
{
"B" :
{
"JackID" : "1",
"Faction" : "B",
"Regard" : "24",
"Currency" : "1340",
"factionName" : "Buccaneer",
"factionKing" : "22",
"Tcurrency" : "0",
"currencyname" : "Pieces of Eight",
"textcolor" : "#FFFFFF",
"bgcolor" : "#000000"
},
"P" :
{
"JackID" : "1",
"Faction" : "P",
"Regard" : "20",
"Currency" : "250",
"factionName" : "Privateer",
"factionKing" : "4",
"Tcurrency" : "0",
"currencyname" : "Privateer Notes",
"textcolor" : "#000000",
"bgcolor" : "#FFFF00"
},
"N" :
{
"JackID" : "1",
"Faction" : "N",
"Regard" : "12",
"Currency" : "0",
"factionName" : "Navy",
"factionKing" : "7",
"Tcurrency" : "0",
"currencyname" : "Navy Chits",
"textcolor" : "#FFFFFF",
"bgcolor" : "#77AADD"
},
"H" :
{
"JackID" : "1",
"Faction" : "H",
"Regard" : "-20",
"Currency" : "0",
"factionName" : "Hiver",
"factionKing" : "99",
"Tcurrency" : "0",
"currencyname" : "",
"textcolor" : "#000000",
"bgcolor" : "#CC9900"
}
}
我正在使用James Newton-King的Json.NET解析器并调用:
JackFactionList jackFactionList = JsonConvert.DeserializeObject<JackFactionList>(sJson);
我的课程定义如下:
namespace Controller
{
public class JackFactionList
{
public JackFaction B;
public JackFaction P;
public JackFaction N;
public JackFaction H;
}
public class JackFaction
{
public int JackId { get; set; }
public string Faction { get; set; }
public int Regard {get; set;}
public int Currency {get; set;}
// Faction details
public string factionName {get; set;}
public string factionKing {get; set;}
public int Tcurrency {get; set;}
public string currencyname {get; set;}
public string textcolor {get; set;}
public string bgcolor {get; set;}
}
}
这一切都有效,但原始列表可能有不同的JackFactions而不是B,P,N和H.理想情况下我想得到的是:
public class JackFactionList
{
public List<JackFaction> factionList;
}
在不更改Json字符串的情况下,如何将JackFactions作为列表而不是单个对象?
答案 0 :(得分:8)
您可以将其序列化为字典:
var jackFactionList = JsonConvert.DeserializeObject<Dictionary<string,JackFaction>>(sJson);
然后你可以得到值:
List<JackFaction> result = jackFactionList.Values.ToList();