【发布时间】: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