2012-04-17 91 views
4

我有輕微的情況。我使用RestSharp,這裏的服務是需要我一個Web服務交互發送以下的請求的一部分:RestSharp/Json.NET序列化數組作爲JSON對象

{ 
    "a":"a value", 
    "b":"b value" 
} 

這是所有罰款和花花公子,因爲你可以簡單地使用class如這樣的:

public class MyClass 
{ 
    public string A { get; set; } 
    public string B { get; set; } 
} 

然而,我不知道知道在運行時屬性名稱。因此,我試圖用一個ExpandoObject,當然,這只是序列化爲一個JSON數組:

[ 
    "a":"a value", 
    "b":"b value" 
] 

因此,它似乎是我需要能夠序列化(和反序列化)一Dictionary(或IEnumerable<KeyValuePair<string, string>>)作爲JSON對象(換句話說,使用大括號而不是括號)。

有沒有人知道我可能會這樣做,最好通過使用Json.NET屬性,這樣的功能可以在其他地方重用?

+0

這是問這裏 http://stackoverflow.com/questions/3739094/serializing-deserializing-dictionary-of-objects-with-json-上反射net – 2012-04-17 22:15:00

+0

海報問題是關於如何將複雜對象的字典序列化爲Json對象的Json數組的細節。我的問題是關於如何將簡單鍵值對的字典序列化爲單個Json對象:其中每個鍵都是屬性名稱,每個值都是屬性值。 – 2012-04-17 22:19:25

回答

3

如何使用JObject?

var obj = new JObject(); 

obj["One"] = "Value One"; 
obj["Two"] = "Value Two"; 
obj["Three"] = "Value Three"; 

var serialized = obj.ToString(Formatting.None); 

爲您提供了從.NET類庫

{"One":"Value One","Two":"Value Two","Three":"Value Three"} 
+0

一直都是簡單的事情,讓你,對吧?我是唯一一個?我會測試這一點,並回到你身邊...... :) – 2012-04-17 22:33:25

+0

這工作完全按照我的需要。由於我想讓序列化代碼與我的域保持獨立,因此我簡單地遍歷了我想要序列化爲對象的鍵值對,並將每個值分配給相應的JObject索引。 – 2012-04-18 06:01:05

+0

雖然這不是我正在尋找的「屬性」解決方案,但可以使用自定義轉換器來適應某些解決方案。 – 2012-04-18 06:02:05

0

使用JavascripSerializer對象。它支持的對象是序列化

看到msdn docs