2017-04-25 54 views
4

我有一個寫在ASP.NET MVC之上的應用程序。在我的控制器之一,我需要創建使用JsonConvert.SerializeObject()結果在C#中,所以當它被轉換成JSON對象看起來像這樣如何在c#中創建鍵/值對的數組?

[ 
    {'one': 'Un'}, 
    {'two': 'Deux'}, 
    {'three': 'Trois'} 
] 

我試圖用Dictionary<string, string>這樣

var opts = new Dictionary<string, string>(); 
opts.Add("one", "Un"); 
opts.Add("two", "Deux"); 
opts.Add("three", "Trois"); 

var json = JsonConvert.SerializeObject(opts); 

然而,上面創建以下JSON

{ 
    'one': 'Un', 
    'two': 'Deux', 
    'three': 'Trois' 
} 

我怎樣的方式創建對象,以便JsonConvert.SerializeObject()產生所需的輸出?

+1

嘗試一組KeyValue對? – RBarryYoung

+1

[Json.Net - 序列化字典作爲數組(鍵值對)]的可能重複](http://stackoverflow.com/questions/12751354/json-net-serialize-dictionary-as-array-of-key-value - 對) – krillgar

+1

@krillgar - 這不是一個重複。在這個問題中,字典條目屬性名稱固定爲「k」和「v」,但問題是屬性名稱是字典鍵值。 – dbc

回答

4

你的外JSON容器是array,所以你需要返回某種非字典集合,如List<Dictionary<string, string>>爲根的對象,像這樣:

var opts = new Dictionary<string, string>(); 
opts.Add("one", "Un"); 
opts.Add("two", "Deux"); 
opts.Add("three", "Trois"); 

var list = opts.Select(p => new Dictionary<string, string>() { {p.Key, p.Value }}); 

樣品fiddle

+0

工作就像一個魅力!謝謝 – Jaylen