2017-08-28 54 views
0

如何使用PHP創建這樣的JSON?我正在嘗試轉換一個動態數據並將其保存到MySQL數據庫中。如何使用php創建嵌套的JSon

{ 
"fbd49440-a5a1-48be-b13e-e8efddad3588": { 
    "0": { 
     "value": "dsfrasdf5464356dfs hdhfg dfgh" 
    } 
}, 
"0fc71cea-5609-40a7-a1d2-b78139660f8f": { 
    "0": { 
     "value": "50" 
    } 
}, 
"73936e70-4329-4aba-b47c-42c64ced420c": { 
    "0": { 
     "file": "\/components\/com_djclassifieds\/images\/item\/25_juliet_ibrahim.jpg", 
     "uniqid": "59a352b96773325", 
     "title": "", 
     "file2": "", 
     "overlay_effect": "", 
     "caption": "", 
     "width": "", 
     "height": "" 
    }, 
"ac00b95e-9eeb-4035-bf4a-ff206319b2d6": { 
    "0": { 
     "value": "members-in-good-standing-2014", 
     "text": "", 
     "target": "0", 
     "custom_title": "", 
     "rel": "" 
    } 
}, 
"69072346-fe4c-489e-8e2b-5a7d7409fd44": { 
    "0": { 
     "value": "34" 
    } 
} 
} 

我試了下面的代碼,但它沒有給我我想要的結果。

$json = (
"fbd49440-a5a1-48be-b13e-e8efddad3588"=> (
    $array1 
), 
"0fc71cea-5609-40a7-a1d2-b78139660f8f"=> (
    $array2 
), 
"73936e70-4329-4aba-b47c-42c64ced420c"=> (
    $array3 
    ), 
"ac00b95e-9eeb-4035-bf4a-ff206319b2d6"=> (
    $array4 
), 
"69072346-fe4c-489e-8e2b-5a7d7409fd44"=> (
    $array5 
) 
) 

echo json_encode($json); 

我會很高興,如果有人可以幫助我,謝謝

+0

未來,你應該發佈你得到的結果。通常不正確的結果會提供有助於找出問題的信息。在這種情況下,錯誤的結果會說「語法錯誤」,因爲您的代碼有多個語法問題。 – Luke

回答

1

json_encode將採取多種類型的有效數據,並試圖把它們編碼成它的JSON表示。它確實要求輸入有效。

您粘貼的代碼有多個語法錯誤,我們無法確定您的$array1. $array2, $array3, $array4, $array5中有什麼。然而,一些改變(並假設你的$數組是實際的數組),你的代碼工作。

還有JSON Constants形式的位掩碼選項,它將定義您的JSON應如何存儲。

$array = array("data" => "value"); // dummy array to show data working 

$json = array(//defined the following as an array 
    "fbd49440-a5a1-48be-b13e-e8efddad3588"=> array(//notice each of these are now defined as arrays 
     $array 
    ), 
    "0fc71cea-5609-40a7-a1d2-b78139660f8f"=> array(
     $array 
    ), 
    "73936e70-4329-4aba-b47c-42c64ced420c"=> array(
     $array 
    ), 
    "ac00b95e-9eeb-4035-bf4a-ff206319b2d6"=> array(
     $array 
    ), 
    "69072346-fe4c-489e-8e2b-5a7d7409fd44"=> array(
     $array 
    ) 
); //added semicolon to end the declaration 

echo json_encode($json, (JSON_FORCE_OBJECT + JSON_PRETTY_PRINT)); 
// added JSON_FORCE_OBJECT and JSON_PRETTY_PRINT 
// As bitmask options, they return a constant to give `json_encode` instructions 
// JSON_FORCE_OBJECT => 16, JSON_PRETTY_PRINT => 128 
// JSON_FORCE_OBJECT + JSON_PRETTY_PRINT = 16 + 128 = 144 
// json_encode($array, (JSON_FORCE_OBJECT + JSON_PRETTY_PRINT) = json_encode ($array, 144); 

返回

在您的JSON數據

{"fbd49440-a5a1-48be-b13e-e8efddad3588":{"0":{"data":"value"}},"0fc71cea-5609-40a7-a1d2-b78139660f8f":{"0":{"data":"value"}},"73936e70-4329-4aba-b47c-42c64ced420c":{"0":{"data":"value"}},"ac00b95e-9eeb-4035-bf4a-ff206319b2d6":{"0":{"data":"value"}},"69072346-fe4c-489e-8e2b-5a7d7409fd44":{"0":{"data":"value"}}}

陣列陣列。

如果您希望它打印每個結果的索引,那麼也需要將其視爲一個數組。足夠簡單的理解結果中有多對的時候,當結果是一對時不太直觀。

$array1 = array("data" => "value"); 
echo json_encode($array1, JSON_FORCE_OBJECT); 
//would return 
//{"data":"value"} 

$array2 = array( 
    array("data" => "value"), 
    array("data" => "value") 
    ); 
echo json_encode($array2, JSON_FORCE_OBJECT); 
// would return 
// {"0":{"data":"value"},"1":{"data":"value"}} 

$array3 = array( 
    array("data" => "value") 
    ); 
echo json_encode($array3, JSON_FORCE_OBJECT); 
// would return 
// {"0":{"data":"value"}} 
+0

謝謝@Luke的回答。它應該是列出與他們的索引值的陣列,像這樣 「0」:{ 「值」: 「1dsfrasdf5464356dfs hdhfg dfgh」 }, 「1」:{ 「值」: 「2dsfrasdf5464356dfs hdhfg dfgh」 } , 「2」:{ 「value」:「3dsfrasdf5464356dfs hdhfg dfgh」 } –

+1

啊,這就是JSON被表示爲一個對象。我會調整答案以適應。你的數組應該作爲一個數組的數組來包含(當我改變它時你會看到不同),並且將'JSON_FORCE_OBJECT'作爲第二個參數添加到'json_encode()' – Luke

+0

當然,你的'$ array1'等是一系列結果。在這種情況下,您不需要在每行中定義它們。 – Luke