簡體   English   中英

PHP - json 編碼/解碼過程將關聯數組轉換為對象

[英]PHP - json encode/decode process convert associative array to object

我需要將 php 變量存儲到文件中,所以我決定序列化或 jsonize(也許 jsonify XD)它們。
出於便攜性目的,我更喜歡 json 解決方案...
在測試期間,我注意到關聯數組被 json 解碼為對象,我不能將其用作關聯數組,但我必須用作對象。
非關聯數組被正確地 json 解碼為非關聯數組。
難道我做錯了什么?
或者這只是 php json 函數的正常行為

這里是示例代碼

$test = array("test1" => 1, "test2" => 2);

$json = json_decode(json_encode($test));

$serialize = unserialize(serialize($test));

//output -> stdClass::__set_state(array( 'test1' => 1, 'test2' => 2, ))
// cant access  to $json["test1"] as in $test but $json->test why?????
var_export($json);

//ouptut -> array ( 'test1' => 1, 'test2' => 2, )
//here i can $serialize["test1"] 
var_export($serialize);

你試過json_decode($test, true)嗎?

您可以設置第二個參數。 當為 TRUE 時,返回的對象將被轉換為關聯數組。 http://php.net/manual/en/function.json-decode.php

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>

輸出:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

是的,我已經在用了...

如果我使用json_decode($test, true)適用於關聯數組,但json_decode($test, true)用於對象,因為原始對象將被解碼為數組...

所以問題是我必須將解碼的變量作為原始變量(對於這兩種情況)。

我編碼我的變量,然后存儲在一個文件中,然后解碼,我必須以訪問原始變量的相同方式訪問它們,所以如果原始變量是關聯數組,我必須將它作為關聯數組x["field"] ,如果原始變量是我必須作為對象x->field訪問的對象。

序列化完成這項工作,json 不,那是我關心的……也許 json 不是為此目的而考慮的?

暫無
暫無

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

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