簡體   English   中英

如何從MYSQL PHP解碼JSON

[英]How to PHP decode JSON from MYSQL

MySQL上我有這個JSON

{"length":1847,"data":[0,0,0,0,-46,37]}

PHP上我需要在數組中串起“數據”對象,所以我試過:

$json = $row['wave'];
$json_array = json_decode($json);
$json_wave = $json_array["data"];

它給我internal server error 500 ,所以我試過:

var_dump(json_decode($json));

我得到的是:

object(stdClass)#7 (5) {
  ["length"]=>
  int(1847)
  ["data"]=>
  array(3694) {
    [0]=>
    int(0)
    [1]=>
    int(0)
    [2]=>
    int(0)
    [3]=>
    int(0)
    [4]=>
    int(-46)
    [5]=>
    int(37)
  }
}

我需要輸出這個字符串0,0,0,0,-46,37 ,為什么我的代碼不起作用?

如果你想要將JSON解碼為數組,你應該使用帶有附加參數的json_decode函數($ assoc as true):

$json_array = json_decode($json, true);

你可以在這里查看文檔: http//php.net/manual/en/function.json-decode.php

json_decode()默認返回Object而不是數組。 如果要解碼數組中的JSON字符串 ,json_decode接受第二個參數為boolean

如果第二個參數為true json_decode()將以數組的形式返回值。

所以你的代碼看起來像這樣,

$json = $row['wave'];
$json_array = json_decode($json,true);
$json_wave = $json_array["data"];

第二個參數的默認值為false

要從Object獲取數據,您可以像這樣訪問它,

print_r($json_array->data);

因此,假設您希望最后一個變量成為您需要的字符串

$json_array = json_decode($json);
$json_wave = implode(',', $json_array->data);

因為您的JSON包含一個對象,所以PHP默認將它放入一個對象中。 這就是var_dump在說stdClass時的含義

您的var_dump顯示該行被解碼為對象,因此您無法使用數組表示法訪問其字段。

更改

$json_wave = $json_array["data"];

$json_wave = $json_array->data;

或者,如果要使用數組而不是對象,可以將第二個參數設置為json_decode,如下所示:

$json_array = json_decode($json, true);

它不起作用,因為你試圖像對象一樣對待對象。 json_decode第二個參數將json_string轉換為對象。 使用json_decode($json, true)來說'嘿,將我的json字符串轉換為數組,而不是對象'。 另一方面,您可以使用$json_array->data而不是$json_array["data"]

嘗試這個 :

$json = '{"length":1847,"data":[0,0,0,0,-46,37]}';
$a = json_decode($json);
print_r($a->data);

變量$a json_decode之后的值存儲在對象表單中,您無法像$a['data']那樣獲取對象值,因此您必須以這種方式使用$a->data

暫無
暫無

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

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