【问题标题】:JSON parse Rails errorJSON解析Rails错误
【发布时间】:2017-08-18 13:04:34
【问题描述】:

您好,我有一个 JSON 数据,并且 JSON 数据在以相同格式(如字符串、JSON 等)传递数据时存在一些限制。以下是我的代码:-

     buttons:[{
            type: "postback",
            title: p.name,
            payload: "get_product" 
     }]

这里的有效负载密钥应该在字符串中传递,但我必须传递一些其他密钥,例如 product_id、name 等,所以我所做的是:-

     buttons:[{
            type: "postback",
            title: p.name,
            payload: "{'payload': 'get_product, 'product_id': #{p.id} }"
     }]

现在,当我将获取有效负载数据时,它就像这样 payload = "{'payload': 'get_product', 'product_id': d644bfda-2194-447c-b0f1-5d4f52c783a4 }",当我将字符串解析为 JSON 时,它会抛出错误 JSON.parse(payload) Processing by Messenger::Bot::Space::StationController#receive as */* *** JSON::ParserError Exception: 784: unexpected token at '{'payload': 'get_product', 'product_id': d644bfda-2194-447c-b0f1-5d4f52c783a4 }'

我知道它抛出错误的原因是单引号内的有效负载数据,所以当我对payload = '{"payload": "get_product", "product_id": "d644bfda-2194-447c-b0f1-5d4f52c783a4" }' 执行此操作时,以及当我运行JSON.parse(payload)

(再见)

payload = '{"payload": "get_product", "product_id": "d644bfda-2194-447c-b0f1-5d4f52c783a4" }'

(再见) JSON.parse(有效负载)

{"payload"=>"get_product", "product_id"=>"d644bfda-2194-447c-b0f1-5d4f52c783a4"}

但问题是当我在 '{"payload": "get_product", "product_id" => #{p.id} }' 之外使用单引号时,由于字符串插值而未打印 product_id 键值,我该怎么办。

【问题讨论】:

  • 你试过payload: "{'payload': 'get_product, 'product_id': '#{p.id}' }"吗?
  • 无论如何,您在 get_product 之后的 payload: "{'payload': 'get_product, 'product_id': #{p.id} }" 中缺少单引号。

标签: ruby-on-rails json ruby parsing ruby-on-rails-5


【解决方案1】:

而不是这个:

"{'payload': 'get_product, 'product_id': #{p.id} }"

这样做:

{payload: 'get_product', product_id: p.id }.to_json

这将返回如下内容:

"{\"payload\":\"get_product\",\"product_id\":123}"

...如您所见,所有hard work like correctly escaping quotation marks 都为您处理好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多