Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php json_decode返回字符串类型而不是对象_Php_Json - Fatal编程技术网

Php json_decode返回字符串类型而不是对象

Php json_decode返回字符串类型而不是对象,php,json,Php,Json,我将一个JSON编码的字符串传递给JSON\u decode(),我希望它的输出是一个对象类型,但我得到的是一个字符串类型。如何返回对象 在文档中,以下内容返回一个对象: $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); $json = json_encode('{"a":1,"b":2,"c":3,"d":4,"e":5}'); var_dump(json_decode($json)); 但是,

我将一个JSON编码的字符串传递给
JSON\u decode()
,我希望它的输出是一个对象类型,但我得到的是一个字符串类型。如何返回对象

在文档中,以下内容返回一个对象:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
$json = json_encode('{"a":1,"b":2,"c":3,"d":4,"e":5}');
var_dump(json_decode($json));
但是,如果我先调用字符串,然后调用
json\u decode()
,则输出是字符串而不是对象:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
$json = json_encode('{"a":1,"b":2,"c":3,"d":4,"e":5}');
var_dump(json_decode($json));
这只是一个简单的例子。实际上,我所做的是通过AJAX将JSON编码的字符串推送到PHP。然而,它确实说明了将这个编码的JSON字符串转换为我可以在PHP中读取的对象的问题,例如“
$JSON->a

如何返回对象类型

谢谢你的回复! 这个问题的实际上下文是am使用来自API的JSON响应。 但是当我对这个响应执行json_解码并尝试访问诸如-$json=json_解码(来自API的json响应)之类的值时; echo$json->a 它给了我一个错误:类stdClass的对象无法转换为字符串

var_dump(json_decode($json, true));

函数
json\u encode
用于以json格式对本机PHP对象或数组进行编码

例如,
$json=json\u encode($arr)
其中
$arr

$arr = array(
  'a' => 1,
  'b' => 2,
  'c' => 3,
  'd' => 4,
  'e' => 5,
);
将返回字符串
$json='{“a”:1,“b”:2,“c”:3,“d”:4,“e”:5}'
。此时,您确实不需要使用
json\u encode
再次对其进行编码

要获取数组,只需执行
json\u解码($json,true)

如果在调用
json\u decode
时省略
true
,则将获得一个
stdClass
实例,该实例具有json字符串中指定的各种属性

有关更多参考资料,请参阅:


不要在JSON数组上写,而是先尝试将其放入PHP数组中

<?php
$array = array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4,
'e' => 5
);
//Then json_encode()
$json = json_encode($array);
echo $json;
die;
?>
其中console.log()中的after data可以添加json变量,如data.a、data.b


另外,对于您提供的字符串M,您不需要进行json编码,因为它是json格式的

为什么要对已经编码的json进行编码?例如:
$json=json_encode(“{”a:1,“b:2,“c:3,“d:4”,“e:5}”)?你在编码一个字符串,而不是一个对象,所以很明显,当你解码它时,你会得到一个字符串。绝对正确,穆萨。!如果你传递的是一个字符串,那么你怎么能期望对象呢?谢谢,理解了我给出的例子中的问题。谢谢你的回复!这个问题的实际上下文是am使用来自API的JSON响应。但是当我对这个响应执行json_解码并尝试访问诸如-$json=json_解码(来自API的json响应)之类的值时;echo$json->a它给了我一个错误:类stdClass的对象无法转换为stringI-see。。你能告诉我们你正在处理的实际json响应吗?有d问题!它被双json_解码,所以var_dump给出的是字符串而不是对象。通过var_dump函数检查并调试。感谢您提醒此功能:)