使用动态属性名称将数据序列化为json字符串

我有一个接受键和值的方法。 两个变量都可以具有动态内容。

key =>是一个动态字符串,可以是所有的东西,例如“LastSentDate”
value =>是一个可以像“2014-10-10”这样的东西的对象

因为键是一个动态值,如“LastSentDate”或任何键传递给方法,然后我希望json属性是键字符串的值,而不是字面上键自己…

public void SetRowVariable(string key, object value) { var obj = new { key = value }; // key property is literally taken maybe anonym object is not a good idea? string jsonString = JsonConvert.SerializeObject(obj); // jsonString should have that output => "{ "LastSentDate": "2014-10-10" }" } 

我如何序列化我得到希望输出的obj?

“key”属性也必须包含特殊的字符,如“!”§$%&/()=?“`

我遗憾地使用.NET 3.5。

你可以使用一个JObject (在Newtonsoft.Json.Linq中):

 var obj = new JObject(); obj[key] = JToken.FromObject(value); string jsonString = obj.ToString(); 

您可以尝试使用Dictionary

 public void SetRowVariable(string key, object value) { var obj = new Dictionary(); obj[key] = value; // Of course you can put whatever crap you want here as long as your keys are unique string jsonString = JsonConvert.SerializeObject(obj); ... }