我正在使用LogMeIn Central API,在我的请求正文中,我需要发送一些Json。我有这个:
host_ids = LmiHost.all.collect {|lmi| lmi.host_id}.join ', '
create_servicetag_report_request.body = {hostIds: host_ids, fields: 'ServiceTag'}.to_json
这将身体变成
{\“hostIds \”:\“5888,6225,214752 \”,\“fields \”:\“ServiceTag \”}
如何删除
\“
来自本节:
\“5888,6225,214752 \”
不要在它周围加上引号。
我正在使用Ruby on Rails
答案 0 :(得分:3)
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来确切了解如何发送多个hostIds。
答案 1 :(得分:1)
您可以使用JSON.parse(create_servicetag_report_request.body[:hostIds])
来解析它。
答案 2 :(得分:0)
只需从此行中删除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