2014-03-24 25 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,将使用\"那里...

相关问题