[Moscow.pm] JS Object -> request params -> perl hash

Sergey Malochinskiy sergey.malochinskiy на gmail.com
Сб Июл 21 01:03:41 PDT 2012


Здравствуйте!

Очередной возможно глупый вопрос.

Пишу REST сервис на Mojolicious и Can.js на стороне клиента.

1. На get запрос отдаю такой JSON (просто из hash):
[
  {
    "category_id":"1",
    "js":"",
    "values":[
      {
        "lang_id":"1",
        "language":"Russian",
        "value":"Помощь",
        "value_id":"1",
        "key_id":"1",
        "language_short":"ru"
      },
      {
        "lang_id":"2",
        "language":"English",
        "value":"Help",
        "value_id":"14",
        "key_id":"1",
        "language_short":"en"
      }
    ],
    "category":{
      "name":"Static pages urls"
    },
    "id":"1",
    "key":"url_help"
  }
]

2. На клиенте это все преобразовывается в объект, объект биндится на
форму, редактируется и через PUT отдается на сервер в виде:
category_id:1
js:
values[0][lang_id]:1
values[0][language]:Russian
values[0][value]:Помощь
values[0][value_id]:1
values[0][key_id]:1
values[0][language_short]:ru
values[1][lang_id]:2
values[1][language]:English
values[1][value]:Help
values[1][value_id]:14
values[1][key_id]:1
values[1][language_short]:en
category[name]:Static pages urls
key:url_help

Т.е. при получении параметров запроса через

my $params = $self->req->body_params->to_hash;

Получаю hash вида:
{
  'values[1][language]' => 'English',
  'category[name]' => 'Static pages urls',
  'values[1][key_id]' => '1',
  'values[1][language_short]' => 'en',
  'values[1][value]' => 'Help',
  'key' => 'url_help',
  'values[0][value_id]' => '1',
  'category_id' => '1',
  'values[0][language_short]' => 'ru',
  'js' => '',
  'values[1][lang_id]' => '2',
  'values[0][key_id]' => '1',
  'values[0][value]' => "\x{41f}\x{43e}\x{43c}\x{43e}\x{449}\x{44c}",
  'values[0][lang_id]' => '1',
  'values[0][language]' => 'Russian',
  'values[1][value_id]' => '14'
}

Есть какие-то способы кроме написать парсер получить hash похожий на
изначальный?

-- 
Best regards,
Sergey Malochinskiy


Подробная информация о списке рассылки Moscow-pm