我将一个 JSON 编码的字符串传递给 json_decode()
并期望它的输出是一个对象类型,但我得到的却是一个字符串类型。如何返回对象?
在文档中,以下返回一个对象:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
但是,如果我先json_encode()
字符串然后调用json_decode()
,输出是一个字符串而不是一个对象:
$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
”。
如何返回对象类型?
感谢您的回复! 这个问题的实际上下文是我正在使用来自 API 的 JSON 响应。 但是当我对这个响应进行 json_decode 并尝试访问像这样的值时 - $json=json_decode(json response from API); echo $json->a 它给了我一个错误:类 stdClass 的对象无法转换为字符串
最佳答案
json_encode
函数用于将原生 PHP 对象或数组编码为 JSON 格式。
例如,$json = json_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_encode
再次对其进行编码!
要取回数组,只需执行 json_decode($json, true)
。
如果您在对 json_decode
的调用中省略了 true
,您将获得一个 stdClass
的实例,其中指定了各种属性JSON 字符串。
有关更多引用,请参阅:
关于php - json_decode 返回字符串类型而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210084/