Парсинг JSON в PHP

226
15 февраля 2018, 16:23

Отправляю на серв данные c помощью axios в JSON. Форма генериться с помощью VueJS.

axios.post(this.form.action, this.form.model) ну и т.д.

В this.form.model у меня значения полей формы в виде key => value.

{"props[color]":[110,109],"props[size]":[113]}

При отправке на сервере получаю

["props[color]"]=>
  array(2) {
    [0]=>
    int(109)
    [1]=>
    int(108)
  }
  ["props[size]"]=>
  array(1) {
    [0]=>
    int(113)
  }

Как можно получить вид

[
    'props' => [
        'color' => [],
        'size' => []
    ]
]

Т.е. на клиенте при отправке мне нужно чтобы вместо

{"props[color]":[110,109],"props[size]":[113]}

было

{props: {color: [110,109], size: [113]}}

Пробовал распарсить с помощю регулярки ключи, но банально не хватает знаний как это сделать правильно.

let dataKeys = {};
let keyRegex = /[^\[\]]+|\[\]/g;
const reducer = (accumulator, currentValue) => { 
    dataKeys[accumulator] = [currentValue]
};
Object.keys(this.form.model).map(key => {
    console.log(key.match(keyRegex).reduce(reducer))
});
console.log(dataKeys); // {"props":["size"]}

П.c.: возможно есть вариант проще как скормить название модели вроде props[color] VueJS которое он сам распарсит правильно.

Answer 1
{"props":{"color":[110,109],"size":[113]}}
READ ALSO
php curl api метод

php curl api метод

Здравствуйте! Подскажите,пожалуйста, как задать метод(InfoCard) в запросе

211
Подстановка переменной php в getElementById

Подстановка переменной php в getElementById

Как правильно сделать подстановку id (берется из массива php $IdLotItem) в javascript при обращении к форме? Пример:

221
Не обновляется автоматически пакет на packagelist

Не обновляется автоматически пакет на packagelist

Я создал свой первый пакет для packagistСделал репозиторий на гитхабе с composer

204
Рефакторинг контроллера в Laravel

Рефакторинг контроллера в Laravel

Куда можно вынести код из контроллера, чтобы он не был таким жирным?? Какие решения есть для таких случаев? Я так понимаю командная шина тут...

193