Ruby数组插入神秘人物

时间:2015-05-11 19:59:33

标签: ruby-on-rails arrays ruby api amazon-product-api

这很奇怪..我正在使用真品宝石从亚马逊产品广告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."}}}}}}

有什么方法可以强迫它只发送给我吗?有点不知所措..

2 个答案:

答案 0 :(得分:3)

Amazon Product Advertising API docsVacuum gem docsItemId字段只是一个字符串,所以基本上当你在['B00HJ50X4W']传递时真空宝石只是在它上面调用.to_s,它会以你在回复中看到的格式将其变成一个字符串:

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

修复您的参数,然后解决问题。

更新

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

您应该修改问题以明确这一点,然后问题的答案为(as the API says)"对于多个ID,请使用逗号 - 最多十个ID的分隔列表。" 所以:

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

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

IE中。实际上你创建一个字符串,ID之间有逗号。

答案 1 :(得分:0)

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