无法解码有效的 json 格式,响应内容必须是实现 __toString() 的字符串或对象,给定的“对象”

Posted

技术标签:

【中文标题】无法解码有效的 json 格式,响应内容必须是实现 __toString() 的字符串或对象,给定的“对象”【英文标题】:cannot decode valid json format, The Response content must be a string or object implementing __toString(), "object" given 【发布时间】:2017-10-21 12:09:04 【问题描述】:

我有一个有效的 json 格式 "active":"false","period":"23-05-2017 to 25-05-2017","percentage":null,"value":null,"status":"inc","fixed_price":null 但是,当我尝试解码它时,它返回错误

响应内容必须是字符串或对象,实现__toString(),“object”给定。

我错过了什么吗?

【问题讨论】:

我确认这是一个有效的 json。也许您错误地调用了解码器。能贴出对应的java代码吗? 将您的 json 函数包装在 ' 中,结果使用 $json = '"active":"false","period":"23-05-2017 to 25-05-2017","percentage":null,"value":null,"status":"inc","fixed_price":null' 。注意打开和关闭。那么你可以拨打json_decode($json) 我使用 php json _decoder。我将该字符串保存在一个变量中,然后调用它 json_decoder($a) 。然后发生错误@Elektordi 已经这样做了,它返回相同的错误@PeymanSeraj 你能展示一下你的代码吗?您是否从第三台服务器获得结果?如果是,您可以 dd($result) 并向我们展示结果吗? 【参考方案1】:

将您的 json 函数包装在 ' 中。因此使用 $json = '"active":"false","period":"23-05-2017 to 25-05-2017","percentage":null,"value":null,"status":"inc","f‌​ixed_price":null'

注意开合。然后你可以调用 json_decode($json)

这是artisan tinker的完整结果:

>>> $json = '"active":"false","period":"23-05-2017 to 25-05-2017","percentage":null,"value":null,"status":"inc","fixed_price":null'
=> ""active":"false","period":"23-05-2017 to 25-05-2017","percentage":null,"value":null,"status":"inc","fixed_price":null"
>>> json_decode($json);
=> #869
 +"active": "false",
 +"period": "23-05-2017 to 25-05-2017",
 +"percentage": null,
 +"value": null,
 +"status": "inc",
 +"fixed_price": null,
   

【讨论】:

idk 为什么,但是,当我调用函数 example(return json_decode('"active":"false","period":"23-05-2017 to 25-05-2017","percentage":null,"value":null,"status":"inc","f‌​ixed_price":null')) 时它会出错,但是当我这样调用它时 $result = example(return json_decode('"active":"false","period":"23-05-2017 to 25-05-2017","percentage":null,"value":null,"status":"inc","f‌​ixed_price":null')) 它可以工作.. 无论如何,谢谢 示例是您的功能吗?你的意思是当你直接调用它时它不起作用但是当你将它存储在一个 $result 变量中时它会起作用吗? 你能不能删除return再检查一下。 json_decode 无论如何都会在没有return 的情况下返回结果。如果你dd(json_decode($json) 你应该有结果。和$result = json_decode($json)然后dd($result)没有区别。

以上是关于无法解码有效的 json 格式,响应内容必须是实现 __toString() 的字符串或对象,给定的“对象”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用具有数组的 2 个结构解码 JSON

无法解码 JSON 响应

在 JSON 中格式化“true”的正确方法是啥?

如何使用 Codable 解码具有更改键的 json 响应?

如何使用 celery worker 从 SQS 轮询消息,消息为 JSON 格式,并且 worker 无法解码该格式

Swift 中的 JSON 解码。无法读取数据,因为它的格式不正确