在使用JSON.NET进行反序列化之前,请从JSON中删除非法字符

本文关键字:JSON 请从 删除 非法 字符 反序列化 NET | 更新日期: 2023-09-27 18:30:00

我有一个字符串,我想将其反序列化为数据表。因为它的值中有一个双引号,JSON.NET无法对此进行反序列化。

[{"name":"soham "the" dasgupta"}]

现在我想用the替换"the"。请帮忙。Replace("'"", "")明显不起作用。

在使用JSON.NET进行反序列化之前,请从JSON中删除非法字符

基本上,您需要找到引号之间的字符,并检查它们是否是有效的JSON分隔符。

我写了一个快速而肮脏的函数,它搜索字符串之间的子字符串,并用有效的JSON分隔符进行匹配。如果子字符串不匹配,它将转义引号。

注意:这段代码是我想法的一个非常基本的例子,它可能无法处理所有类型的JSON输入。

static string FixJson(string input)
{
    var output = input;
    for (var x = 0; x < input.Length; x++)
    {
        if (input[x] != ''"') continue;
        for (var y = x + 1; y < input.Length; y++)
        {
            if (input[y] != ''"') continue;
            var found = false;
            for (var z = y + 1; z < input.Length; z++)
            {
                if (input[z] != ''"') continue;
                var tmp = input.Substring(y + 1, z - y - 1);
                if (tmp.Any(t => t != ' ' && t != ':' && t != ',' && t != '{' && t != '}'))
                {
                    output = output.Replace("'"" + tmp + "'"", "'''"" + tmp + "'''"");
                }
                x = y;
                found = true;
                break;
            }
            if (found)
                break;
        }
    }
    return output;
}