使用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'"}
]")
与从调试器中获取的值完全相同的字符串,一切都很好。
我错过了什么?
将'"
放入字符串时,此信息将转换为"
字符。这种转换发生在编译时,编译器将斜杠"''"解释为命令,而不是字符。但问题是,在你的情况下,斜杠仍然在你的字符串中。
试试这样的东西:
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";