尝试获取非对象属性

3

我从安卓设备发出了请求。

$request = Slim::getInstance()->request()->getBody();
$final = json_decode($request);
echo '{"test": ' . $final->name . '}';

在这里,

$request = "{\"name\":\"xxxx\"}"

运行时出现尝试获取非对象属性错误信息。


尝试使用echo输出以下内容:http://php.net/manual/en/function.json-last-error.php - Arno
1
你提供的示例运行得非常好,我认为你在另一个情况下遇到了问题... 在解码之前只需 var_dump($request),你就能看到解决问题的答案。 - Halayem Anis
@HalayemAnis 我尝试在 $request 中传递静态数据,例如 $request='{"name":"xxxx"}',它可以正常工作。我遇到的问题是双引号。 - No_Rulz
@No_Rulz 给我一个 var_dump($request),这样我们就不用猜测真正的问题了 :) - Halayem Anis
@HalayemAnis 我得到了 ""{"name":"Durai"}""。 - No_Rulz
1个回答

0

看起来你已经对对象进行了两次编码(反斜杠让我这么想)。因此,尝试对对象进行两次解码可能会解决这个问题:

$final = json_decode(json_decode( $request ));

或者,一开始就不要进行两次编码。您也可以先去掉反斜杠然后解码。


"{"name":"xxxx"}" 来自 Android,它是 JSONObject.toString 的值。 - No_Rulz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接