2017-08-30 26 views
0

我想在put請求體中發送一個JSON對象數組。在rails上發送ruby中的Json對象數組

JSON體:

[ 
{ 
    "a":1, 
    "b":2 
}, 
{ 
    "a":2, 
    "b":1 
} 
] 

我使用HTTP ::把發出請求。我將Json中的數據作爲散列發送。

put("url", data: json)

但是,這會導致問題,因爲在客戶端被解碼爲:

[ 
"data":[{ 
    "a":1, 
    "b":2 
}, 
{ 
    "a":2, 
    "b":1 
}] 
] 

如何發送JSON不散列或者有什麼辦法讓這些值出發送之前的哈希?

+0

你確定嗎?因爲響應'json'不是你寫的有效的json – rony36

+0

如果你的意思是數據引用,我已經添加了它。這是一個錯字 – leoOrion

+0

我相信在客戶端解析'json'看起來像這樣:https://gist.github.com/mur-wtag/c2fde2f21c2fa33c424b6b68371c804c – rony36

回答

0

由於內部設置了一些參數,我們無法使用HTTP :: Put.new。我們通過在她的庫中添加一個方法來解決這個問題,該方法又使用法拉第來提出請求。我發佈這裏使用的方法。我不知道這是不是最好的方法。

0

嘗試定義Content-Type

json_data = '[{"a":1,"b":2},{"a":2,"b":1 }]' 
hash_body = JSON.parse json_data 
uri = URI.parse('https://www.google.com/api/something') 

request = Net::HTTP::Put.new(uri.request_uri, 'Content-Type' => 'application/json') 
request.body = hash_body 
response = http.request(request) 

乾杯!