使用JArray.Parse解析Json时出现问题

本文关键字:问题 Json JArray Parse 解析 使用 | 更新日期: 2023-09-27 18:20:10

我想我在这里遗漏了一些明显的东西。

我从一个服务得到一个json响应,然后对其进行格式化,以便可以将其作为JArray使用。

我的格式化代码留给我使用Jarray.Parse所需的内容。

如果我仔细阅读这个C#代码,我可以看到我的json的值现在看起来像:

[
 {'"Id'":'"row1'",'"TheDate'":'"01/01/2013 00:00:00'",'"Description'":'"Test1'",'"Field'":'"N'"},       
 {'"Id'":'"row2'",'"TheDate'":'"01/01/2013 00:00:00'",'"Description'":'"Test2'",'"Field'":'"N'"}
]

然后我调用JArray.Parse(json),得到以下错误:

Invalid property identifier character: '. Path '[0]', line 1, position 2.

奇怪的是,如果我打电话:

 JArray.Parse("[
      {'"Id'":'"row1'",'"TheDate'":'"01/01/2013 00:00:00'",'"Description'":'"Test1'",'"Field'":'"N'"},      
      {'"Id'":'"row2'",'"TheDate'":'"01/01/2013 00:00:00'",'"Description'":'"Test2'",'"Field'":'"N'"}
     ]")

与从调试器中获取的值完全相同的字符串,一切都很好。

我错过了什么?

使用JArray.Parse解析Json时出现问题

'"放入字符串时,此信息将转换为"字符。这种转换发生在编译时,编译器将斜杠"''"解释为命令,而不是字符。但问题是,在你的情况下,斜杠仍然在你的字符串中。

试试这样的东西:

string json = @"[
    {'Id':'row1','TheDate':'01/01/2013 00:00:00','Description':'Test1','Field':'N'},
    {'Id':'row2','TheDate':'01/01/2013 00:00:00','Description':'Test2','Field':'N'}
]".Replace("'", "'"");
JArray.Parse(json);

在代码中,如果使用多行字符串,编译器不会将斜杠视为特殊字符。这与在第一个引号前面设置at符号相同,如下所示:

var test = @"'a'b'c'''n";