首頁 >後端開發 >PHP問題 >php json怎麼轉換陣列對象

php json怎麼轉換陣列對象

PHPz
PHPz原創
2023-04-26 09:10:12501瀏覽

在Web開發中,JSON格式非常常見,因為它可以將資料在不同的程式語言之間進行傳輸和交換。 PHP語言也提供了非常方便的JSON編解碼方法,可以將JSON字串轉換為PHP數組或對象,也可以將PHP數組或物件轉換為JSON字串。本文將介紹PHP中將JSON字串轉換為陣列或對象,並進一步將陣列或物件轉換為陣列或物件的方法。

  1. JSON轉換為陣列

使用PHP內建的json_decode()函數可以將JSON格式的字串轉換為PHP陣列。 json_decode()函數接收兩個參數,第一個參數是要轉換的JSON格式的字串,第二個參數是一個布林值,如果該參數設為true,則會將JSON解碼為關聯數組,如果該參數為false,則傳回一個物件。預設情況下該參數為false。

下面是一個使用json_decode()函數將JSON轉換為陣列的範例:

$jsonStr = '{"name":"Jack","age":20}';
$arr = json_decode($jsonStr, true);
print_r($arr);

以上程式碼將輸出一個以鍵值對錶示的陣列:

Array
(
    [name] => Jack
    [age] => 20
)
  1. JSON轉換為物件

如果不指定json_decode()函數的第二個參數,則會傳回一個PHP物件。使用json_decode()函數將JSON格式的字串轉換為PHP物件非常簡單,只需要傳入JSON格式字串即可。

下面是一個將JSON格式字串轉為PHP物件的範例:

$jsonStr = '{"name":"Jack","age":20}';
$obj = json_decode($jsonStr);
var_dump($obj);

以上程式碼將輸出一個PHP物件:

object(stdClass)#1 (2) {
  ["name"]=>
  string(4) "Jack"
  ["age"]=>
  int(20)
}
  1. 陣列轉換為JSON字串

使用PHP內建的json_encode()函數可以將PHP陣列轉換為JSON字串。 json_encode()函數接收一個參數,也就是要轉換的PHP數組,在將PHP數組轉換為JSON字串時,json_encode()函數會自動將鍵值對轉換為JSON字串中的鍵值對。

下面是一個將PHP陣列轉換為JSON字串的範例:

$arr = array("name"=>"Jack", "age"=>20);
$jsonStr = json_encode($arr);
echo $jsonStr;

以上程式碼將輸出以下JSON格式的字串:

{"name":"Jack","age":20}
  1. 物件轉換為JSON字串

用內建的json_encode()函數將PHP物件轉換為JSON字串也很簡單。在轉換前,需要使用json_encode()函數的另一個參數,即JSON_PRETTY_PRINT常數,它用於設定將JSON字串格式化為易於閱讀且更人類友好的格式。

下面是一個將PHP物件轉換為JSON字串的範例:

class Person {
    public $name;
    public $age;
    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}
$person = new Person("Jack", 20);
$jsonStr = json_encode($person, JSON_PRETTY_PRINT);
echo $jsonStr;

以上程式碼將輸出以下易於閱讀的JSON格式的字串:

{
    "name": "Jack",
    "age": 20
}
  1. 陣列物件互相轉換

將一個包含多個物件的陣列轉換為JSON格式的字串,可以使用json_encode()函數。而將JSON格式的字串轉換回PHP數組對象,可以使用json_decode()函數。下面是一個將包含多個物件的陣列轉換成JSON格式的範例:

class Person {
    public $name;
    public $age;
    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}
$person1 = new Person("Jack", 20);
$person2 = new Person("Tom", 25);
$person3 = new Person("Lucy", 18);
$arr = array($person1, $person2, $person3);
$jsonStr = json_encode($arr, JSON_PRETTY_PRINT);
echo $jsonStr;

以上程式碼將輸出以下JSON格式的字串:

[
    {
        "name": "Jack",
        "age": 20
    },
    {
        "name": "Tom",
        "age": 25
    },
    {
        "name": "Lucy",
        "age": 18
    }
]

接下來將這個包含多個對象的JSON格式的字串轉換回PHP陣列物件:

$jsonStr = '[{"name":"Jack","age":20},{"name":"Tom","age":25},{"name":"Lucy","age":18}]';
$arr = json_decode($jsonStr);
print_r($arr);

執行以上程式碼,將輸出以下PHP陣列物件:

Array
(
    [0] => stdClass Object
        (
            [name] => Jack
            [age] => 20
        )

    [1] => stdClass Object
        (
            [name] => Tom
            [age] => 25
        )

    [2] => stdClass Object
        (
            [name] => Lucy
            [age] => 18
        )

)

由於使用json_decode()函數的第二個參數沒有指定,所以會傳回一個PHP物件陣列。如果要將JSON解碼為PHP關聯數組,則需要將第二個參數設為true

在這篇文章中,我們介紹瞭如何在PHP中將JSON格式的字串轉換為陣列或對象,並進一步將陣列或物件轉換為JSON字串。學習這些功能可以幫助您更輕鬆地處理Web應用程式中的JSON資料。

以上是php json怎麼轉換陣列對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn