C# 使用JsonConvert反序列化带有转义字符的字符串

C# 使用JsonConvert反序列化带有转义字符的字符串,c#,json,serialization,C#,Json,Serialization,我有这样一个字符串: "[ { \"SomeProperty\": 22 } ]" 我正在尝试将其反序列化为已知类型的列表: string toProcess = $@"[{text}]".Replace("\n", ","); toProcess = Regex.Unescape(toProcess); List<KnownType> objectList = JsonConvert.DeserializeObje

我有这样一个字符串:

"[
  {
    \"SomeProperty\": 22
  }
 ]"
我正在尝试将其反序列化为已知类型的列表:

        string toProcess = $@"[{text}]".Replace("\n", ",");
        toProcess = Regex.Unescape(toProcess);
        List<KnownType> objectList = JsonConvert.DeserializeObject<List<KnownType>>(toProcess);
string toProcess=$@“[{text}]”。替换(“\n”,“,”);
toProcess=Regex.Unescape(toProcess);
List objectList=JsonConvert.DeserializeObject(toProcess);

但是,我看到它正试图反序列化包含
\“
字符的字符串,但失败的原因是
无法反序列化当前JSON对象
。如何正确地反序列化此对象?

您不需要
字符串处理=$@“[{text}]”。替换(“\n”,”,”;

string text=@”[
{
\“SomeProperty\”:22
}
]";
text=Regex.Unescape(text);
var objectList=JsonConvert.DeserializeObject(文本);
Console.WriteLine(objectList[0].SomeProperty);//22

此代码按预期工作。

您的字符串不是有效的JSON。因此无法对其进行反序列化。您可以使用此代码进行验证。此外,在反序列化之前,有效的JSON字符串不需要任何操作。因此,我认为您的方法不正确。您确定您的JSON与此完全相同,还是您在调试器w中看到的JSON相同indow?@Christos我正在使用的字符串不是有效的JSON。我正在尝试使其成为有效的JSON。@L.B-是-这是字符串。它是用于在其他地方显示的,但我需要反序列化它,所以我必须将其更正为JSON。我没有有效的JSON字符串-我正在更正一个讨厌的字符串,包括
\“
。不是
\”
。我还有内联
\n
而不是逗号-因此第一行似乎是必需的。@SB2055\“转换成了一个文字字符串\”,所以我不确定你的意思。
string text = @"[
  {
    \""SomeProperty\"": 22
  }
 ]";


text = Regex.Unescape(text);
var objectList = JsonConvert.DeserializeObject<List<KnownType>>(text);

Console.WriteLine(objectList[0].SomeProperty);//22