首页 > 解决方案 > 在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" } 

标签: c#jsonjson.net

解决方案


请检查以下代码以将您的字符串转换为 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();
}

推荐阅读