【发布时间】:2021-10-12 07:14:42
【问题描述】:
我有一个格式的哈希
{com: 1234, users: [{nid: 3, sets: [1,2,3,4]}, {nid: 4, sets: [5,6,7,8]}]}
我正在发送到远程服务器。我正在使用HTTParty gem 来执行此操作。代码是这样的
class Api
include HTTParty
attr_accessor :headers
def initialize
@headers = { 'Content-Type' => 'application/json' }
end
def post_com(hsh)
response = self.class.post('some_url', query: hsh, headers: headers, format: :plain)
end
end
当我这样做时
api = Api.new.post_com({com: 1234, users: [{nid: 3, sets: [1,2,3,4]}, {nid: 4, sets: [5,6,7,8]}]}
在远程服务器上,哈希以以下格式发送
POST "/some_url?com=1234&users[][nid]=3&users[][sets][]=1&users[][sets][]=2&users[][sets][]=3&users[][sets][]=4&users[][nid]=4&users[][sets][]=5&users[][sets][]=6&users[][sets][]=7&users[][sets][]=8
这意味着对于集合中的每个条目,都将发送重复的字符 users[][sets][]。在操作中,set中可以有很多条目,结果是服务器拒绝了帖子,因为它有太多的字符。
无论如何我可以用更少的重复序列化哈希。例如,如果我只是这样做
{com: 1234, users: [{nid: 3, sets: [1,2,3,4]}, {nid: 4, sets: [5,6,7,8]}]}.to_json
我收到
"{\"com\":1234,\"users\":[{\"nid\":3,\"sets\":[1,2,3,4]},{\"nid\":4,\"sets\":[5,6,7,8]}]}"
字符少得多。
【问题讨论】:
-
您确定它是以 json 格式发送的吗? (我的意思是content_type,接收方是否将此请求识别为json?)
标签: ruby-on-rails json httparty