将数据序列化为具有动态属性名称的json字符串

本文关键字:json 字符串 属性 动态 序列化 数据 | 更新日期: 2023-09-27 18:30:00

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

key=>是一个动态字符串,可以是类似"LastSentDate"的所有内容
value=>是一个对象,可以是类似于"2014-10-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。

将数据序列化为具有动态属性名称的json字符串

您可以使用JObject(在Newtonsoft.Json.Linq中):

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

您可以尝试使用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);
    ...
}