在使用 JSON.NET 反序列化之前从 JSON 中删除非法字符
Remove illegal character from JSON before deserializing with JSON.NET
我有一个类似的字符串,我想将其反序列化为数据表。因为它在值中有一个双引号 JSON.NET
无法反序列化它。
[{"name":"soham "the" dasgupta"}]
现在我想用 the
替换 "the"
。请帮忙。 Replace("\"", "")
显然没有工作。
基本上您需要找到引号之间的字符并检查它们是否是有效的 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;
}
我有一个类似的字符串,我想将其反序列化为数据表。因为它在值中有一个双引号 JSON.NET
无法反序列化它。
[{"name":"soham "the" dasgupta"}]
现在我想用 the
替换 "the"
。请帮忙。 Replace("\"", "")
显然没有工作。
基本上您需要找到引号之间的字符并检查它们是否是有效的 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;
}