你已經在你的問題問會不會是有效的JSON,因爲對象是不允許一個跟着一個直接,除非他們是一個數組(見JSON.org)的一部分的格式。但是,只要您有合適的密鑰可供使用,您就可以將您的員工列表轉換爲字典並序列化。一種想法是使用員工號作爲重點,例如:
var employees = new List<Employee>
{
new Employee { name = "Alex", number = "25860340" },
new Employee { name = "Tom", number = "94085345" }
};
var obj = new
{
employees = employees.ToDictionary(e => e.number)
};
string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
Console.WriteLine(json);
這將使你這個輸出,這是接近你想要的東西:
{
"employees": {
"25860340": {
"name": "Alex",
"number": "25860340"
},
"94085345": {
"name": "Tom",
"number": "94085345"
}
}
}
如果員工數量ISN 「T實際上獨一無二的,你也可以使用列表中的每個員工的職位作爲這樣一個關鍵:
int i = 0;
var obj = new
{
employees = employees.ToDictionary(e => i++)
};
這會爲您提供以下輸出,而不是:
{
"employees": {
"0": {
"name": "Alex",
"number": "25860340"
},
"1": {
"name": "Tom",
"number": "94085345"
}
}
}
結果與JsonConvert.Serialize(員工) 「{\」 員工\ 「:[ {\」 名稱\ 「:\」 亞歷克斯\ 「\ 」號碼\「:\」 25860340 \ 「}, {\」name \「:\」Tom \「,\」number \「:\」94085345 \「} }}」 – sacredMonster
「您期望的是無效的JSON格式。你爲什麼要那樣? – Gildor