Декодирование JSON .stringify в PHP - PullRequest
1 голос
/ 31 марта 2020

Я отправляю следующую строку через функцию javascript в файл PHP:

    function showcart()
{
    document.getElementById('cart').value = JSON.stringify(paypal.minicart.cart.items());
}

На стороне PHP строка выглядит следующим образом:

echo $_POST['cart']; 
[{"_data":{"cmd":"_cart","add":"1","item_name":"FILA 1010302","item_image":"images/1010302-1.png","amount":99,"discount_amount":"50.00","submit":"Adicionar ao carrinho","quantity":2,"href":"http://teste/index.html#5"},"_options":[],"_discount":100,"_amount":99,"_total":98,"_eventCache":{"change":[[null,null]]}},{"_data":{"cmd":"_cart","add":"1","item_name":"FILA 1010575","item_image":"images/1010575-1.png","amount":99,"discount_amount":"50.00","submit":"Adicionar ao carrinho","quantity":1,"href":"http://teste/index.html#5"},"_options":[],"_discount":50,"_amount":99,"_total":49,"_eventCache":{"change":[[null,null]]}},{"_data":{"cmd":"_cart","add":"1","item_name":"FILA 1010707","item_image":"images/1010707-1.png","amount":99,"discount_amount":"50.00","submit":"Adicionar ao carrinho","quantity":1,"href":"http://teste/index.html#5"},"_options":[],"_discount":50,"_amount":99,"_total":49,"_eventCache":{"change":[[null,null]]}},{"_data":{"cmd":"_cart","add":"1","item_name":"FILA SCM00514","item_image":"images/scm00514-1.png","amount":99,"discount_amount":"50.00","submit":"Adicionar ao carrinho","quantity":1,"href":"http://teste/index.html#5"},"_options":[],"_discount":50,"_amount":99,"_total":49,"_eventCache":{"change":[[null,null]]}}]

Мне нужно сохранить каждое поле в отдельных переменных, например:

item = 1 item_name = FILA 1010302, item_image = images/1010302-1.png quantity = 2
item = 2 item_name = FILA 1010575, item_image = images/1010575-1.png quantity = 1

Я пробую несколько способов, используя json_decode и html_entity_decode, но я просто могу ' не могу достичь желаемого результата.

Может ли кто-нибудь помочь мне в этом, я предполагаю, что это довольно простая задача, но я новичок в PHP, пожалуйста, попытайтесь понять.

Заранее спасибо!

1 Ответ

2 голосов
/ 31 марта 2020

Используя сетевой анализатор JSON, http://json.parser.online.fr/, я вижу, что $ _POST ['cart'] - это массив из 5 объектов. Внутри каждого объекта есть еще 6 объектов (_data, _options, _discount и т. Д. c.). Тогда внутри объекта _data есть девять элементов. Чтобы добраться до значений, вам нужно посмотреть, где они находятся в этом гнезде из JSON объектов.

$item_name = json_decode($_POST['cart'], true)[0]["_data"]["item_name"];

$array_of_items_in_cart = json_decode($_POST['cart'], true);
$first_item_in_cart = array_of_items_in_cart[0];
$name_of_first_item_in_cart = first_item_in_cart["_data"]["item_name"];
$first_item_discount = first_item_in_cart["_discount"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...