2014-09-13 2 views
0

Я пытаюсь выполнить POST-массив в RESTful PHP API. Идея состоит в том, чтобы разрешить (n> 0) записи, каждая из которых содержит remote_id, измерение_id и метрику.POSTing многомерный массив из Python

Вот мой клиент Python:

data = urllib.urlencode([ 
      ("remote_id", 1), 
      ("dimension_id", 1), 
      ("metric",metric1), 
      ("remote_id", 1), 
      ("dimension_id", 2), 
      ("metric",metric2) 
      ]) 
    response = urllib2.urlopen(url=url, data=data) 

А вот мой серверный PHP

<?php 
print_r($_POST); 
?> 

Это возвращается, предсказуемо:

Array 
(
    [remote_id] => 1 
    [dimension_id] => 2 
    [metric] => 16 
) 

Он смотрит на меня, как я перезапись каждый экземпляр remote_id, dimension_id и метрика с конечными значениями, что неудивительно, поскольку они все с одинаковыми именами.

Каков правильный способ сделать это? Я вижу ужасный метод с уникальными ключами (1_remote_id, 1_dimension_id, 1_metric + 2_remote_id, 2_dimension_id, 2_metric), но это не очень хорошо масштабируется.

Я предполагаю, что я после того, как что-то вроде этого PHP, но в Python:

<?php 
$observations = array(); 
$observations[] = [ 
    "remote_id" => "a1", 
    "metric_id" => "foo", 
    "metric" => 1 
]; 
$observations[] = [ 
    "remote_id" => "a1", 
    "metric_id" => "bar", 
    "metric" => 2 
]; 
?> 

Цените любые советы!

Сэм

ответ

0

Не цитируйте меня на этом (я не сделал каких-либо PHP в LOOONG времени), но это может просто работать:

data = urllib.urlencode([ 
      ("remote_id[]", 1), 
      ("dimension_id[]", 1), 
      ("metric[]",metric1), 
      ("remote_id[]", 1), 
      ("dimension_id[]", 2), 
      ("metric[]",metric2) 
     ]) 

Я хотел бы дать ему попробовать в любом случае ,

+0

Я получаю недействительный синтаксис, если я помещаю [] s за пределы строк (например, «remote_id» []). Если я кладу их внутри я получаю это: Массив ( [remote_id] => Массив ( [0] => 1 [1] => 1 ) [dimension_id] => Массив ( [0] => 1 [1] => 2 ) [метрика] => Массив ( [0] => 16 [1] => 16 ) ) , который выглядит довольно хорошо ! благодаря –

Смежные вопросы