2012-04-17 89 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