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

标签 php json

我将一个 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 字符串。

有关更多引用,请参阅:

http://www.php.net/manual/en/function.json-encode.php

http://www.php.net/manual/en/function.json-decode.php

关于php - json_decode 返回字符串类型而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210084/

相关文章:

php - 如何在数据库中存储许多图像

java - 如何仅序列化 Jackson 的 child 的 ID

c# - MVC 中的 AJAX JSON 调用来过滤 View 中的列表

javascript - 使用 JS 加载 HTML 文件

php - Laravel Eloquent 关系 "one to many",出现错误 "SQLSTATE[42S02]: Base table or view not found: 1146"

PHP/MYSQL 从一个表获取引用,然后从另一个表获取结果。

php - 如何使用 php mysql 数据库更新和插入两个不同的表

php - PHP 中的单元测试 cookie

json - 如何在 PostgreSQL 9.2 中索引 JSON 数据?

iphone - 来自 JSON 的 objective-c (iphone) 中的对象映射