2015-01-13 4 views
0

Я пытаюсь воспроизвести массив из хэшей и проблемы с синтаксисом. Это базовый формат я хочу:Curl POST массив хэшей

curl -X POST http://localhost:3000/api/v1/shops -d \ 
    "shop[users][]=1 \ 
    &shop[users][]=2\ 
    &shop[users][]=c" 

Как включить значения 1, 2 и c в хэшей?

На моем Rails API, я хочу, чтобы объект выглядеть следующим образом:

{ 
    shop: { 
    users: [ 
     { 
     name: "Foo", 
     age: 34 
     }, 
     { 
     name: "Bar", 
     age: 12 
     } 
    ] 
    } 
} 

Обновление

Я попытался here-doc решение ниже, но Rails разбирает, что неправильно, что дает мне:

{"{ shop: { users: "=>{"  {  name: \"Foo\",  age: 34  },  {  name: \"Bar\",  age: 12  } "=>{" }}"=>nil}},"action"=>"create", "controller"=>"shops"} 

ответ

0

Попробуйте сделать это, используя здесь-doc:

$ curl -X POST http://localhost:3000/api/v1/shops -d "@-" <<EOF 
{ 
    shop: { 
    users: [ 
     { 
     name: "Foo", 
     age: 34 
     }, 
     { 
     name: "Bar", 
     age: 12 
     } 
    ] 
    } 
} 
EOF 
+0

спасибо. Пометка этого вопроса с помощью Rails также объясняется тем, что Rails делает несколько фанковых параметров parsing. Ваше решение не получило корректный анализ. – mehulkar

0

У меня была такая же проблема и я не хотел использовать json-файл, поэтому я узнал, что этот способ также отлично работает! (по крайней мере, с Rails 3)

curl -i http://localhost:3000/team/999/transfers \ 
-X "POST" \ 
-d "team[transfers][][player_in_id]=1" \ 
-d "team[transfers][][player_out_id]=2" \ 
-d "team[transfers][][player_in_id]=3" \ 
-d "team[transfers][][player_out_id]=4"