2013-06-27 114 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";