2011-12-25 77 views
4

我需要創建一個列表,如List<String,Object>,但我似乎無法做到這一點。如何創建一個像List <String,Object>的集合?

我創建了一個類:

public class Pair 
{ 
    public String Key { get; set; } 
    public Object Value { get; set; } 
} 

如果我做一個List<Pair>,我的問題開始時我必須把它序列化到JSON,我得到的是這樣的:

 
{ 
    "Key": "version", 
    "Value": "3.2.1" 
}, 
{ 
    "Key": "name", 
    "Value": "coordinateOperations" 
} 

雖然我期待:

 
{ 
    "version": "3.2.1" 
}, 
{ 
    "name": "coordinateOperations" 
} 

我的猜測是我要麼找到一種方法有List<String,Object>或控制序列化機制。後者看起來更強硬,看起來更像是一招,而不是真正的解決方案。

此外,我不能Dictionary<String,Object>因爲我會有重複的鍵。也許查找更需要。

+1

你怎麼序列化?我相信必須有可能向轉換器提供所需的格式。 – Vlad 2011-12-25 10:54:26

+0

我使用JSON.Net來序列化。 – 2011-12-25 10:56:47

+0

快速瀏覽文檔後,我找到了一種自定義自定義類的序列化的方法:http://james.newtonking.com/projects/json/help/ContractResolver.html。應該有更簡單的方法。 – Vlad 2011-12-25 11:01:05

回答

7

爲什麼要創建自己的?您可以使用KeyValuePair

List<KeyValuePair<String, Object>> nList = new List<KeyValuePair<String, Object>>(); 
+0

這不會給我所期望的JSON輸出.. – 2011-12-25 10:59:22

+0

只需用上面的方法創建一個自定義對象,然後重寫.ToString()方法..我認爲這樣做會完成這項工作。 – Shai 2011-12-25 11:00:29

+0

我會去這個答案。您將不得不爲所需的JSON創建自定義序列化器/反序列化器約定,否則.Net將不知道哪個屬性會去哪裏,因爲不會有名爲「version」或「name」的屬性。 – Darbio 2011-12-25 11:14:45

0

如果你的鑰匙都是獨一無二的,你可以用什麼OWIN使用,這是IDictionary<string, object>

+0

OP寫了「我不能有字典<字符串,對象>,因爲我會重複鍵」,所以你的解決方案在這裏不起作用。 – Artemix 2016-12-29 19:06:42

相關問題