Parse JSON Array em php e adicione valores à matriz php

Eu tenho um object json desse tipo:

{ "order": { "Food": "[Test 1, Test 2, Test 0, Test 3, Test 1, Test 3, Test 11, Test 7, Test 9, Test 8, Test 2]", "Quantity": "[2, 3, 6, 2, 1, 7, 10, 2, 0, 0, 1]" }, "tag": "neworder" } 

Eu usei o json_decode, mas eu gostaria de levar os valores dentro de Alimentos e Quantidade e armazená-los dentro de uma matriz de php, eu tentei muitas abordagens, mas realmente sem sorte. Alguém poderia apontar para a maneira correta de fazê-lo, ou algo está errado com a minha mensagem json?

   

O segundo argumento do PHP json_decode definido como verdadeiro irá retornar matrizes associativas em vez de objects.

Adicionalmente, o seu JSON é válido, mas sua input Food resolve uma string ao usar json_decode. Para ter a matriz que deseja que este trecho de código funcione:

 < ?php $json = '{"order":{"Food":"[Test 1, Test 2, Test 0, Test 3, Test 1, Test 3, Test 11, Test 7, Test 9, Test 8, Test 2]","Quantity":[2,3,6,2,1,7,10,2,0,0,1]},"tag":"neworder"}'; $array = json_decode($json, true); // Fix Food array entry $array['order']['Food'] = explode(', ', trim($array['order']['Food'], '[]')); print_r($array); 

Desta forma, você obterá uma matriz de PHP para manipular a vontade:

 Array ( [order] => Array ( [Food] => Array ( [0] => Test 1 [1] => Test 2 [2] => Test 0 [3] => Test 3 [4] => Test 1 [5] => Test 3 [6] => Test 11 [7] => Test 7 [8] => Test 9 [9] => Test 8 [10] => Test 2 ) [Quantity] => Array ( [0] => 2 [1] => 3 [2] => 6 [3] => 2 [4] => 1 [5] => 7 [6] => 10 [7] => 2 [8] => 0 [9] => 0 [10] => 1 ) ) [tag] => neworder ) 

Se este:

 { "order": { "Food": "[Test 1, Test 2, Test 0, Test 3, Test 1, Test 3, Test 11, Test 7, Test 9, Test 8, Test 2]", "Quantity": "[2, 3, 6, 2, 1, 7, 10, 2, 0, 0, 1]" }, "tag": "neworder" } 

é verdadeiramente o json que você está usando, então você terá que fazer um pequeno trabalho para obter o que deseja.

 $obj = json_decode($json); // the food and quantity properties are string not json. $foods = explode("," trim($obj->order->Food;, "[]")); $foods = array_map("trim", $foods); // get rid of the extra spaces $quantitys = json_decode($obj->order->Quantity); 

Para que tenha sido válido json, ele teria que ser de autoria como

 { "order": { "Food": ["Test 1", "Test 2", "Test 0", "Test 3", "Test 1", "Test 3", "Test 11", "Test 7", "Test 9", "Test 8", "Test 2"], "Quantity": [2, 3, 6, 2, 1, 7, 10, 2, 0, 0, 1] }, "tag": "neworder" }