[英]php json_decode return [object Object]
我在PHP中遇到JSON数据问题。 我需要在我的SQL语句中使用来自此JSON的数据。 当我尝试使用echo(var_dump或print_r也不起作用)命令对其进行调试时,输出为
{"records":"tekst","name":"[object Object]"}
这是一个JSON结构:
{
records: 'tekst',
name: {
imie: 'imie1',
nazwisko: 'nazwisko1'
}
}
我正在尝试通过json_decode()
对此进行解码,但出现错误
“警告:json_decode()期望参数1为字符串,给定数组”。
有人知道怎么了吗?
有关JSON及其所需格式的PHP手册: function.json-decode 。 基本上,仅双引号,并且名称必须加引号。
使用PHP进行转换的演示。
因此,您提供的json字符串看起来像,除去了空格,如下所示:
{records:[{id:1,name:'n1'},{id:2,name:'n2'}]}
这是一个包含带有两个条目的数组的对象,两个条目可以是数组或对象。
除外, 它不是有效的JSON字符串,因为它包含单引号 。 PHP希望所有名称都用双引号引起来,例如“ id”:1。
因此,假设数组为内部条目,可能的PHP代码可以重新创建该代码:
$json = new stdClass();
$records = array();
$entry = array('id' => 1, 'name' => 'n1');
$records[] = $entry;
$entry = array('id' => 2, 'name' => 'n2');
$records[] = $entry;
$json->records = $records;
$jsonEncoded = json_encode($json);
当“转储”时,其外观如下:
object(stdClass)[1]
public 'records' =>
array
0 =>
array
'id' => int 1
'name' => string 'n1' (length=2)
1 =>
array
'id' => int 2
'name' => string 'n2' (length=2)
现在,结构产生的字符串是:
{"records":[{"id":1,"name":"n1"},{"id":2,"name":"n2"}]}
看起来与您相似,但不完全相同。 请注意双引号中的名称。
但是,如果您的json字符串看起来相同,则PHP可以对其进行解码,如下所示:
$jsonDecoded = json_decode($jsonEncoded);
var_dump($jsonDecoded, 'decoded');
输出:注意所有对象...
object(stdClass)[2]
public 'records' =>
array
0 =>
object(stdClass)[3]
public 'id' => int 1
public 'name' => string 'n1' (length=2)
1 =>
object(stdClass)[4]
public 'id' => int 2
public 'name' => string 'n2' (length=2)
我们可能需要数组,因此在“解码”中使用true作为第二个参数
$jsonDecoded = json_decode($jsonEncoded, true);
var_dump($jsonDecoded, 'decoded with true switch');
输出:使用数组而不是对象。
array
'records' =>
array
0 =>
array
'id' => int 1
'name' => string 'n1' (length=2)
1 =>
array
'id' => int 2
'name' => string 'n2' (length=2)
string 'decoded with true switch' (length=24)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.