0

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

我从服务中得到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\"}
     ]")

这是与从调试器获取的值完全相同的字符串,一切正常。

我错过了什么?

4

1 回答 1

2

当您将 a\"放入字符串时,此信息将转换为"char。这种转换发生在编译时,编译器将斜杠“\”解释为命令而不是字符。但问题在于你的情况,斜杠仍在你的字符串中。

尝试这样的事情:

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";
于 2013-06-27T11:25:12.613 回答