Serialize data to json string with dynamic property names

余生长醉 提交于 2019-12-10 02:54:01

问题


I have a method which accepts a key and a value. Both variables can have a dynamic content.

key => is a dynamic string which can be everything like e.g. "LastSentDate"
value => is an object which can be everything like e.g. "2014-10-10"

As key is a dynamic value like "LastSentDate" or whatever key is passed to the method then I want that the json property is the value of the key string and not literally key itself...

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" }"
}

How do I have to serialize the obj that I get the wished output?

It must also be possible that the "key" property can contain special chars like "!"§$%&/()=?"`

I am using .NET 3.5 sadly.


回答1:


You could use a JObject (in Newtonsoft.Json.Linq):

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

string jsonString = obj.ToString();



回答2:


You may try using a 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);
    ...
}


来源:https://stackoverflow.com/questions/26874014/serialize-data-to-json-string-with-dynamic-property-names

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!