rails to_json 删除引用
rails to_json remove quote
我正在使用 LogMeIn Central API,在我的请求 body 中,我需要发送一些 Json。我有这个:
host_ids = LmiHost.all.collect {|lmi| lmi.host_id}.join ', '
create_servicetag_report_request.body = {hostIds: host_ids, fields: 'ServiceTag'}.to_json
这会将 body 变成
{\"hostIds\":\"5888, 6225, 214752\",\"fields\":\"ServiceTag\"}
我怎样才能删除
\"
来自本节:
\"5888, 6225, 214752\"
它不应该有引号。
我在 Rails
上使用 Ruby
您可以使用JSON.parse(create_servicetag_report_request.body[:hostIds])
来解析它。
to_json
添加 \"
(转义引号)的原因是因为它将 hostIds 转换为字符串。在您的 rails 控制台中试试看有什么不同。
{"hostids":[0,1,2,3]}.to_json
=> "{\"hostids\":[0,1,2,3]}"
{"hostids":"[0,1,2,3]"}.to_json
=> "{\"hostids\":\"[0,1,2,3]\"}"
这可以通过尝试以另一种方式看到:puts [1,2,3,4]
vs puts "[1,2,3,4]"
最终我会参考 LMI Central API 来弄清楚如何发送多个 hostId。
只需从这一行中删除 join
部分:
host_ids = LmiHost.all.collect { |lmi| lmi.host_id }.join ', '
join
将您的 ID 数组连接成逗号分隔的字符串。这似乎不是你想要的。
顺便说一句。您可以将 .collect { |lmi| lmi.host_id }
缩短为 map(&:host_id)
:
create_servicetag_report_request.body = {
hostIds: LmiHost.all.map(&:host_id),
fields: 'ServiceTag'
}.to_json
我正在使用 LogMeIn Central API,在我的请求 body 中,我需要发送一些 Json。我有这个:
host_ids = LmiHost.all.collect {|lmi| lmi.host_id}.join ', '
create_servicetag_report_request.body = {hostIds: host_ids, fields: 'ServiceTag'}.to_json
这会将 body 变成
{\"hostIds\":\"5888, 6225, 214752\",\"fields\":\"ServiceTag\"}
我怎样才能删除
\"
来自本节:
\"5888, 6225, 214752\"
它不应该有引号。
我在 Rails
上使用 Ruby您可以使用JSON.parse(create_servicetag_report_request.body[:hostIds])
来解析它。
to_json
添加 \"
(转义引号)的原因是因为它将 hostIds 转换为字符串。在您的 rails 控制台中试试看有什么不同。
{"hostids":[0,1,2,3]}.to_json
=> "{\"hostids\":[0,1,2,3]}"
{"hostids":"[0,1,2,3]"}.to_json
=> "{\"hostids\":\"[0,1,2,3]\"}"
这可以通过尝试以另一种方式看到:puts [1,2,3,4]
vs puts "[1,2,3,4]"
最终我会参考 LMI Central API 来弄清楚如何发送多个 hostId。
只需从这一行中删除 join
部分:
host_ids = LmiHost.all.collect { |lmi| lmi.host_id }.join ', '
join
将您的 ID 数组连接成逗号分隔的字符串。这似乎不是你想要的。
顺便说一句。您可以将 .collect { |lmi| lmi.host_id }
缩短为 map(&:host_id)
:
create_servicetag_report_request.body = {
hostIds: LmiHost.all.map(&:host_id),
fields: 'ServiceTag'
}.to_json