簡體   English   中英

將 Json 字符串轉換為 PHP 對象數組時出錯

[英]Error converting Json string to array of objects PHP

我以將我的 javascript localstorage 轉換為 post 請求的形式發布了一個帖子。 從那里我嘗試解碼我​​的 json 字符串以在 PHP 中創建一個對象。

我的 php 代碼在回顯之前的樣子

    $cart_items = $_POST['cart_items'];
    $cart_items = json_encode($cart_items);
    $array_test = json_decode($cart_items);
    print_r($array_test);

它在瀏覽器中返回什么

[{\"id\":83494890,\"title\":\"2020 Hino 358\",\"partType\":\"Bumpers\",\"price\":100,\"stockNumber\":12313131312,\"thumbImg\":\"/jOIY91KhEby8_f.jpg\",\"permalink\":\"/part-description/?part=83494890\",\"maxQuantity\":1,\"requestedQuantity\":\"3\"}
,{\"id\":83493833,\"title\":\"2009 Freightliner 5020080\",\"partType\":\"ABS Modulator Valves\",\"price\":150,\"stockNumber\":\"P-1211111111157\",\"thumbImg\":\"/OOjQbsi6p8kX_f.jpg\",\"permalink\":\"/part-description/?part=83493833\",\"maxQuantity\":1,\"requestedQuantity\":\"1\"}]

我知道通常在查看 json 數據時不會到處都有正斜杠。 我試圖將 json_decode 轉換成一個數組而不是一個對象,然后為里面的每個對象創建一個 foreach。 但是我得到了這個錯誤返回“為 foreach() 提供的無效參數

如何使這個 json 字符串轉換為對象數組? 謝謝

我遇到的問題是,當我獲得 $_POST[] 時,它使用了 PHP 的“魔術引號”,這使我的 json 格式不正確。 話雖如此,禁用此功能后,它會刪除斜杠。

看起來$_POST['cart_items']已經包含 JSON。 所以你只需要解碼它,而不是先編碼它。

$array_test = json_decode($_POST['cart_items'], true);
print_r($array_test);

但它實際上被編碼了兩次,這就是它轉義引號的原因,所以你需要調用json_decode()兩次。 但是它缺少整個事情的雙引號,並且嵌入的換行符無效。

以下工作:

<?php
  $cart_items = '"[{\"id\":83494890,\"title\":\"2020 Hino 358\",\"partType\":\"Bumpers\",\"price\":100,\"stockNumber\":12313131312,\"thumbImg\":\"/jOIY91KhEby8_f.jpg\",\"permalink\":\"/part-description/?part=83494890\",\"maxQuantity\":1,\"requestedQuantity\":\"3\"},{\"id\":83493833,\"title\":\"2009 Freightliner 5020080\",\"partType\":\"ABS Modulator Valves\",\"price\":150,\"stockNumber\":\"P-1211111111157\",\"thumbImg\":\"/OOjQbsi6p8kX_f.jpg\",\"permalink\":\"/part-description/?part=83493833\",\"maxQuantity\":1,\"requestedQuantity\":\"1\"}]"';
  $array_test = json_decode(json_decode($cart_items));
  print_r($array_test);

我建議你找到發送cart_item POST 參數的代碼並修復它,這樣它就不會執行所有這些額外的編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM