2013-06-27 117 views
0

我想我在这里失去了一些明显的东西。麻烦解析与JArray.Parse Json

我得到一个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\"} 
    ]") 

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

我错过了什么?

+0

您是否在使用$ .ajax方法获取响应? – Manish

+0

@Mac - 不,回复是我发布的内容。错误是解析它。 – davy

+0

尝试添加'@':JArray.Parse(@json) –

回答

1

当你把一个\"在一个字符串中,这个信息被转换为" 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";