Ruby数组插入神秘字符

Ruby array inserting mystery characters

这很奇怪..我正在使用 Vacuum gem 从亚马逊产品广告 API 请求数据.. 并使用数组传递它需要的 ID.. 对于一些在我发送它和 API 收到它之间的原因是在 id 中插入了一个反斜杠?并且一直在这样做..

lookup_items = ['B00HJ50X4W']

puts lookup_items

response = x.item_lookup(
query: {'ItemId' => lookup_items ,
        'ResponseGroup' => 'EditorialReview'
},
persistent: true
)

y = response.to_h
puts y

我运行上面的代码,这是响应:

B00HJ50X4W
{"Name"=>"ItemId", "Value"=>"[\"B00HJ50X4W\"]"}, {"Name"=>"Operation",     "Value"=>"ItemLookup"}, {"Name"=>"ResponseGroup", "Value"=>"EditorialReview"}, {"Name"=>"Service", "Value"=>"AWSECommerceService"}, {"Name"=>"SignatureMethod", "Value"=>"HmacSHA256"}, {"Name"=>"SignatureVersion", "Value"=>"2"}, {"Name"=>"Timestamp", "Value"=>"2015-05-11T19:51:30Z"}, {"Name"=>"Version", "Value"=>"2013-08-01"}, {"Name"=>"Signature", "Value"=>"F6+Ju5im8CrJW5vjoZpRRqOUK9HO/wIR0NCF2E7lMfM="}]}, "RequestProcessingTime"=>"0.0053020000000000"}, "Items"=>{"Request"=>{"IsValid"=>"True", "ItemLookupRequest"=>{"IdType"=>"ASIN", "ItemId"=>"[\"B00HJ50X4W\"]", "ResponseGroup"=>"EditorialReview", "VariationPage"=>"All"}, "Errors"=>{"Error"=>{"Code"=>"AWS.InvalidParameterValue", "Message"=>"[\"B00HJ50X4W\"] is not a valid value for ItemId. Please change this value and retry your request."}}}}}}

有没有办法强制它只发送我发送的内容??有点不知所措..

没有反斜杠。 \" 是您在双引号字符串中编写 " 的方式。 IOW,"\""'"' 相同。

Amazon Product Advertising API docs and the Vacuum gem docs 中,ItemId 字段只是一个字符串,所以基本上当你传入 ['B00HJ50X4W'] 然后是 Vacuum gem只是在其上调用 .to_s 将其转换为您在响应中看到的格式的字符串:

[30] pry(main)> ['B00HJ50X4W'].to_s
=> "[\"B00HJ50X4W\"]"

修正你的参数,你就会修正你的问题。

更新

我刚刚注意到你的评论,所以你显然知道如何让这项工作一直有效,所以现在我猜你真的想知道如何请求多个项目的项目信息?

您应该编辑您的问题以使其清楚,然后那个问题的答案是(as the API says)"For more than one ID, use a comma-separated list of up to ten IDs." 所以:

lookup_items = ['B00HJ50X4W', 'OTHER_ID', 'YET_ANOTHER_ID']

response = x.item_lookup(
query: {'ItemId' => lookup_items.join(","),
        'ResponseGroup' => 'EditorialReview'
},
persistent: true
)

即。您实际上创建了一个字符串,在 ID 之间使用逗号。