c# - 在c#中将自定义的单个字符串转换为JSON并根据条件构造最终的json
问题描述
我有以下格式的字符串
string data = "key1:value;key2:value2;key3:value3;create_date:2020-05-15 14:18";
我尝试将其转换为以下 JSON 格式,但无法实现
{ "key1":"value", "key2":"value2", "key3":"value3", "create_date":"2020-05-15 14:18" }
并想根据条件构造最终的 json(仅保存 'IsActive' 的 json 数据 - 来自数据库的配置表)
将存储在数据库中的最终 JSON
{ "key1":"value", "create_date":"2020-05-15 14:18" }
解决方案
请检查以下代码以将您的字符串转换为 json 并在将其放入数据库之前删除键
static void Main(string[] args)
{
var str = "key1:value;key2:value2;key3:value3;create_date:2020-05-15 14:18";
str = ConvertToJson(str);
str = RemoveKeysFromJson(str, new string[] { "key1", "key2" });
}
static string ConvertToJson(string str)
{
var splittedArr = str.Split(';')
.Select(x =>
Regex.Replace(x, "^(.*?):(.*)$", x =>
{
return $"\"{x.Groups[1].Value}\":\"{x.Groups[2].Value}\"";
})
);
var json = "{" + string.Join(",", splittedArr) + "}";
return json;
}
static string RemoveKeysFromJson(string json, IEnumerable<string> keys)
{
var jobject = JsonConvert.DeserializeObject<JObject>(json);
foreach (var key in keys)
{
jobject.Remove(key);
}
return jobject.ToString();
}