我有一个接受键和值的方法。两个变量都可以有动态内容。
key =>是一个动态字符串,可以像所有的一样“LastSentDate”
value =>是一个对象,可以像所有的一样“2014年10月”
由于key是一个动态值,如“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。
答案 0 :(得分:12)
您可以尝试使用Dictionary<string, object>
:
public void SetRowVariable(string key, object value)
{
var obj = new Dictionary<string, object>();
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);
...
}
答案 1 :(得分:12)
您可以使用JObject
(在Newtonsoft.Json.Linq中):
var obj = new JObject();
obj[key] = JToken.FromObject(value);
string jsonString = obj.ToString();