【问题标题】:Can WCF accept JSON encoded using single quotes and non-quoted identifiers?WCF 可以接受使用单引号和非引号标识符编码的 JSON 吗?
【发布时间】:2011-02-08 23:13:54
【问题描述】:

有没有一种方法可以指示 WCF 接受使用单引号(而不是双引号)格式化的 JSON:

{
   'foo': 'bar'
}

或者像这样使用不带引号的标识符:

{
    foo: 'bar'
}

事实上,JSON 似乎只有在格式如下的情况下才会被接受:

{
    "foo": "bar"
}

使用前两个示例中的任何一个都会导致 400(错误请求)。

【问题讨论】:

    标签: wcf json


    【解决方案1】:

    前两个示例是无效的 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      ; "
    

    【讨论】:

    • 当许多 JavaScript 框架在属性名称周围使用单引号作为 fx github.com/request/request 时,第一个示例是非法的并没有多大帮助
    • @LarsLadegaard 谁在乎javascript?
    【解决方案2】:

    DataContractJsonSerializer 总是写入严格的 JSON。

    在反序列化过程中的不同点(通常缺少数组或对象的结束标签,或不正确的转义,或格式不正确的数字),它将接受不正确的、非严格的 JSON

    但是,我可以明确地告诉您,这不是其中一种情况。 DataContractJsonSerializer 对于 JSON 始终需要双引号字符串。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 2012-04-24
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多