Я пытаюсь запросить API через JSON / REST, используя Ruby.
require 'rubygems'
require 'rest-client'
require 'json'
###Request Build#####
url = 'http://site_name'
request ={
"format"=>'json',
"foo"=> {"first"=>1.1,"second"=>2.2},
"foo_1"=>300,
"foo_2"=>"speed",
"foo_3"=>[
{"id"=> "abc123", "first"=> 1.8, "second"=> 2.8},
{"id"=> "abc456", "first"=> -1.5, "second"=> 1.2}
]
}.to_json
### go go go ###
response = RestClient.post(url,request, :content_type => :json, :accept => :json)
puts response
Выше работает, он будет запрашивать API просто отлично.Однако в документации API, которую я использую, говорится, что у меня должно быть «:» вместо «=>», например
"format":'json',
"foo":{"first":1.1,"second":2.2},
"foo_1":300,
"foo_2":"speed",
"foo_3":[
{"id":"abc123", "first":1.8, "second":2.8},
{"id":"abc456", "first":-1.5, "second":1.2}
]
}
, когда я их использую, я получаю эту ошибку:
new.rb:10: syntax error, unexpected ':', expecting tASSOC
"format":'json',
Мне было интересно, почему это было?Разве ruby не любит хэши с ":"?Причина, по которой я спрашиваю, состоит в том, что на foo_3 у меня есть файл json, который я хотел бы вставить, который отформатирован следующим образом:
[{"id":"abc123","first":1.8, "second": 2.8},
{"id":"abc456","first":-1.5, "second": 1.2}]
Поэтому, когда я пытаюсь использовать его, также получаю:
Существует около 2000 идентификаторов - поэтому я не могу изменить все: на => вручную, и это будет динамично.Так что я немного застрял!
ТАК Либо я должен найти способ изменить все ":" на "=>" перед отправкой массива, либо я делаю что-то глупое и очень неправильное.
Спасибо