如何从MYSQL PHP解码JSON

时间:2016-08-09 13:37:03

标签: php mysql json

MySQL 上,我有 JSON

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

PHP 上我需要在数组中对“data”对象进行字符串处理,所以我尝试了:

$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,为什么我的代码不起作用?

6 个答案:

答案 0 :(得分:4)

如果你想要将JSON解码为数组,你应该使用带有附加参数的json_decode函数($ assoc as true):

$json_array = json_decode($json, true);

您可以在此处查看文档:{​​{3}}

答案 1 :(得分:2)

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);

答案 2 :(得分:2)

因此,假设您希望最后一个变量成为您需要的字符串

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

因为您的JSON包含一个对象,所以PHP默认将它放入一个对象中。这就是var_dump表示stdClass

时的含义

答案 3 :(得分:0)

您的var_dump显示该行被解码为对象,因此您无法使用数组表示法访问其字段。

更改

$json_wave = $json_array["data"];

$json_wave = $json_array->data;

或者,如果您想使用数组而不是对象,可以将第二个参数设置为json_decode,如下所示:

$json_array = json_decode($json, true);

答案 4 :(得分:0)

它不起作用,因为您正在尝试将对象视为数组。 json_decode第二个参数将json_string转换为对象。使用json_decode($json, true)来说'嘿,将我的json字符串转换为数组,而不是对象'。另一方面,您可以使用$json_array->data代替$json_array["data"]

答案 5 :(得分:0)

试试这个:

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

变量json_decode中的$a之后的值存储在对象表单中,您无法获得像$a['data']这样的对象值,因此您必须以这种方式使用$a->data