`

JSON里的引号

阅读更多
前几天升级了下Rails的版本和一些Gems, 今天测试API程序里发现一个JSON对单引号和双引号有区分,
引用
POST /transfers.json
{'transfer': {'account' : 'RX-1234567', 'amount': '1.23', 'currency': 'USD'}}

调试返回500及
引用
MultiJson::DecodeError
743: unexpected token at '{'transfer': {'account' : 'RX-1234567', 'amount': '1.23', 'currency': 'USD'}}  '

json_pure (1.6.1) lib/json/common.rb:148:in `parse'
json_pure (1.6.1) lib/json/common.rb:148:in `parse'
multi_json (1.0.3) lib/multi_json/engines/json_gem.rb:13:in `decode'
multi_json (1.0.3) lib/multi_json.rb:65:in `decode'
activesupport (3.1.1) lib/active_support/json/decoding.rb:12:in `decode'
actionpack (3.1.1) lib/action_dispatch/middleware/params_parser.rb:47:in `parse_formatted_parameters'
actionpack (3.1.1) lib/action_dispatch/middleware/params_parser.rb:17:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/flash.rb:243:in `call'
rack (1.3.5) lib/rack/session/abstract/id.rb:195:in `context'
rack (1.3.5) lib/rack/session/abstract/id.rb:190:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/cookies.rb:331:in `call'
activerecord (3.1.1) lib/active_record/query_cache.rb:62:in `call'
activerecord (3.1.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:477:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (3.1.1) lib/active_support/callbacks.rb:392:in `_run_call_callbacks'
activesupport (3.1.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.1.1) lib/action_dispatch/middleware/callbacks.rb:28:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/reloader.rb:68:in `call'
rack (1.3.5) lib/rack/sendfile.rb:101:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
railties (3.1.1) lib/rails/rack/logger.rb:13:in `call'
rack (1.3.5) lib/rack/methodoverride.rb:24:in `call'
rack (1.3.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.1.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.3.5) lib/rack/lock.rb:15:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/static.rb:53:in `call'
railties (3.1.1) lib/rails/engine.rb:456:in `call'
railties (3.1.1) lib/rails/railtie/configurable.rb:30:in `method_missing'

的错误了, 检查后将单此号换成双引号
引用
POST /transfers.json
{"transfer": {"account" : "RX-1234567", "amount": "1.23", "currency": "USD"}}

程序就没问题了.

之前的json gem版本也不记得是多少了, 现在的是
引用
json_pure (1.6.1)
multi_json (1.0.3)


Google了一下, 网上也有人说有这样的问题, PHP, jQuery都有这样的问题, 看来是做了一些限制,

后来找到一些说明:
rfc4627 2.5 String 里明确规定queation marks 的值是%x22, 也就是双引号

目前还不清楚是不是真的这样, 只能用双引号, 而不是单引号, 先记下吧, 再研究一下.
:evil:

ref.
http://json.org
http://www.ietf.org/rfc/rfc4627.txt
http://ejohn.org/blog/the-state-of-json/
分享到:
评论

相关推荐

    PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠

    这时候需要仔细检查JSON字符串,确保格式的正确性,特别是确保所有的双引号`"`都没有被错误地转义。 在PHP处理JSON字符串时,还需注意以下几点: - 确保JSON字符串格式正确,前后没有多余的空格或特殊字符。 - ...

    CXF,RESTEASY返回格式为JSON时,如果类型为String的值为数值时,JSON中引号消失的问题解决

    然而,当JSON中的字符串值实际上代表数字时,可能会出现一个特殊问题:JSON解析器会尝试将这些字符串转换为数值类型,导致原本应被引号包围的字符串丢失引号。这个问题通常发生在JSON序列化过程中,即从Java对象转化...

    谷歌浏览器Json格式化插件,浏览器接口调试json

    标题中的“谷歌浏览器Json格式化插件,浏览器接口调试json”指的是在Google Chrome浏览器中用于解析和美化JSON数据的扩展程序。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和...

    javascript JSON.parse解析双引号嵌套单引号格式的数据

    JSON.parse() 方法用于将一个 JSON 字符串转换为对象。 >str1 = {'distance': 1, 'update_time': 'None', 'n_homalt_N_het': '13/3822', 'ratio': '-', 'quality': '451'} {'distance': 1, 'update_time': 'None', '...

    json解析时遇到英文双引号报错的解决方法

    在处理JSON数据时,经常会遇到各种解析错误,其中一种常见的问题是英文双引号导致的解析错误。在编程语言中,JSON数据通常以字符串形式表示,而字符串内容中的特殊字符需要进行转义,才能确保JSON数据的格式正确无误...

    JSON_Trans.rar_LABVIEW转换JSON_json Labview_labivew json_labview j

    它主要由键值对(key-value pairs)组成,键用引号包围,值可以是字符串、数字、布尔值、数组、null或其他JSON对象。 2. **LabVIEW中的JSON支持**:从LabVIEW 2013版本开始,内置了对JSON的支持。提供了JSON解析器...

    PHP处理JSON字符串key缺少双引号的解决方法

    然而,在某些情况下,我们可能会遇到不规范的JSON字符串,即其中的key没有使用双引号。直接使用PHP内置的json_decode函数解析这样的字符串会导致失败。 为了解决这个问题,我们可以编写一个自定义的函数,这个函数...

    jsonview json 高亮显示插件

    JSON格式通常由键值对组成,键用引号括起来,后跟冒号,值与键之间用逗号分隔,整个对象用大括号包围。 "jsonview" 是一个针对浏览器的插件,专门设计用来帮助开发者更好地查看和理解JSON格式的数据。在没有json...

    Java Json字符串的双引号("")括号如何去掉

    在Java编程中,处理Json字符串时,我们可能会遇到需要去除字符串中的特定字符,例如双引号,以便符合Json规范或者解决解析错误的情况。本篇主要讨论如何去除Java Json字符串中的双引号,并针对可能出现的问题提供...

    JSON中双引号的轮回使用过程中一定要小心

    1. 如果JSON对象中有属性是包含双引号的,比如 代码如下: { “description”: “25”” } 如果转换成字符串形式,将自动加上反斜线,变为”25\””, 然后传递给REST API,保存到MongoDB中。 此时如果使用MongoDB的...

    JSON解析 创建JSON

    键用引号包围,然后是冒号,冒号后面是对应的值。值可以是字符串、数字、布尔值、数组、null,或者是嵌套的JSON对象。例如: ``` { "name": "John", "age": 30, "city": "New York" } ``` 2. 创建JSON对象:...

    解析错误富文本json字符串(带双引号)的快速解决方法

    然而,在处理包含特殊字符如双引号(")的富文本时,可能会遇到解析错误,因为JSON标准规定键和字符串值必须用双引号包围。本文将探讨如何快速解决这个问题。 当JSON字符串中出现非转义的双引号时,解析器会认为这...

    JSONedit -----json校验

    - 在编辑JSON数据时,保持键名用双引号括起,且每个键值对之间以逗号分隔。 - JSON数据中的值必须是有效的JSON类型,如字符串、数字、布尔值、null、数组或嵌套的对象。 - 避免在JSON数据中使用JavaScript保留字作为...

    JSON JSON .zip

    JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。它采用完全独立于语言的文本格式,但也使用了类似于C家族语言(包括C、C++、C#、Java、JavaScript、Perl、Python等)的习惯,使得这些语言的...

    经典ASP读取JSON字符串/生成JSON对象,数组对象等。

    键必须是字符串,用双引号包围。例如:`{"name": "John", "age": 30}`。数组则用方括号[]表示,元素间以逗号分隔,如:`["apple", "banana", "orange"]`。 2. **ASP解析JSON字符串**: 在经典ASP中,没有内置的...

    C#解析json字符串总是多出双引号的原因分析及解决办法

    当你遇到解析JSON字符串时总是多出双引号的问题,这通常是由于序列化或反序列化过程中的输出格式设置不当所导致的。在本案例中,开发者在使用Newtonsoft.Json库进行JSON操作时遇到了这个问题。 首先,让我们分析...

    json格式化工具win版

    2. **高亮显示**:通过不同颜色高亮关键词、键、值和引号,使得JSON数据更易于区分和辨识。 3. **验证语法**:检查输入的JSON是否符合语法规则,确保其有效性和可解析性。 4. **搜索与替换**:在大量JSON数据中快速...

    json工具、json查看

    对象以大括号{}包围,由键值对组成,键用引号包围,值可以是字符串、数字、布尔值、null、对象或数组等。数组则用方括号[]包围,其内部可以包含任意数量的值,值之间用逗号分隔。 二、JSON工具的重要性 1. 数据...

    JSON.stringify 语法实例讲解

    ### JSON.stringify 语法实例讲解 #### 一、概述 在JavaScript中,`JSON.stringify` 是一个非常实用且强大的函数,用于将JavaScript值转换为JSON字符串。这对于存储或传输数据非常有用,尤其是在网络请求中,经常...

Global site tag (gtag.js) - Google Analytics