【发布时间】:2011-02-08 23:13:54
【问题描述】:
有没有一种方法可以指示 WCF 接受使用单引号(而不是双引号)格式化的 JSON:
{
'foo': 'bar'
}
或者像这样使用不带引号的标识符:
{
foo: 'bar'
}
事实上,JSON 似乎只有在格式如下的情况下才会被接受:
{
"foo": "bar"
}
使用前两个示例中的任何一个都会导致 400(错误请求)。
【问题讨论】:
有没有一种方法可以指示 WCF 接受使用单引号(而不是双引号)格式化的 JSON:
{
'foo': 'bar'
}
或者像这样使用不带引号的标识符:
{
foo: 'bar'
}
事实上,JSON 似乎只有在格式如下的情况下才会被接受:
{
"foo": "bar"
}
使用前两个示例中的任何一个都会导致 400(错误请求)。
【问题讨论】:
前两个示例是无效的 JSON 文本。 http://www.ietf.org/rfc/rfc4627.txt
object = begin-object [ member *( value-separator member ) ]
end-object
member = string name-separator value
string = quotation-mark *char quotation-mark
quotation-mark = %x22 ; "
【讨论】:
DataContractJsonSerializer 总是写入严格的 JSON。
在反序列化过程中的不同点(通常缺少数组或对象的结束标签,或不正确的转义,或格式不正确的数字),它将接受不正确的、非严格的 JSON。
但是,我可以明确地告诉您,这不是其中一种情况。 DataContractJsonSerializer 对于 JSON 始终需要双引号字符串。
希望这会有所帮助!
【讨论】: