2014-03-24 26 views
1

我有一個問題,我的JSON服務沒有被調用,可能是由於格式不正確。將撇號作爲JSON字符串的一部分傳遞

不過,我不明白它是什麼錯。我讀過它,發現撇號不應該逃脫。當我逃脫它們時,它也不起作用。

"{ 
    "fields": [ 
    { 
    "Text": "PaymentReminders", 
    "Value": "'yes'" 
    } 
] 
}" 

是的,我真的需要'是'在撇號之下。

我期待在服務器端的字符串,然後我反序列化。它的工作原理沒有撇號。

謝謝!

EDIT1:

這是接受在服務器上的結構:

Public Class TemplateField 
    Public Property Value() As String = "val" 
    Public Property Text() As String = "tex" 
End Class 

Public Class FieldsList 
    Public Property fields() As TemplateField() 
End Class 

連帶反序列化這樣的:

Dim jsSerializer As New JavaScriptSerializer 

Dim fieldsArray As EventInfoDetails.FieldsList 
fieldsArray = jsSerializer.Deserialize(Of EventInfoDetails.FieldsList)(fields) 

和所有的工作,除非它包含撇號。就像我不能在字符串中插入撇號一樣。

+0

http://stackoverflow.com/questions/3020094/how-should-i-escape-strings-in-json –

+0

問題是當我做它使用'''而不是''',我不能在服務器端反序列化它,它不適合字符串類型 – lucafik

+0

如果JSON有效,那麼服務器應該支持它,你能更改服務器代碼嗎? –

回答

0

JSON並不僅僅不需要逃脫撇號,但實際上它不允許這樣做(與JavaScript的)。所以你的

"Value": "'yes'" 

是完全有效的JSON。這是,除非你在JavaScript代碼中將這個JSON作爲一個字符串字面值插入,在這種情況下,它將是JavaScript,這是一個要求你跳過'作爲\'的JavaScript(你需要兩個轉義符,JSON和JavaScript中的一個頂部)。

無論如何,有一些奇怪的代碼:

"{ 
    "fields": [ 
    { 
    "Text": "PaymentReminders", 
    "Value": "'yes'" 
    } 
] 
}" 

爲什麼你的整個JSON結構用雙引號(")包圍?它是其他編程語言中的任何類型的字符串文字嗎?在這種情況下,您可能需要遵循該語言的這些引用(")符號的轉義規則。例如,Java和VB,將使用\"那裏...

相關問題