访问来自 API 响应的对象
2022-2-3 12:35:17
收藏:0
阅读:365
评论:1
你好,我从 API post 请求中获取了一个 $response
,下面是 $response
LINE\LINEBot\Response::__set_state(array(
'httpStatus' => 200,
'body' => '{"richMenuId":"richmenu-5a489c22120e48cec70f3c3cd3b318db"}',
'headers' =>
array (
'server' => 'openresty',
'date' => 'Thu, 03 Feb 2022 11:31:51 GMT',
'content-type' => 'application/json',
'content-length' => '58',
'cache-control' => 'no-cache, no-store, max-age=0, must-revalidate',
'expires' => '0',
'pragma' => 'no-cache',
'x-content-type-options' => 'nosniff',
'x-frame-options' => 'DENY',
'x-line-request-id' => '84ababf8-81e9-4cda-aeb0-25d9b44e9b24',
'x-xss-protection' => '1; mode=block',
),
))
有人能告诉我如何访问上述对象中的 "richMenuId" 吗?
我尝试访问对象如下所示
$response->body->richMenuId
这会给我一个错误:
无法访问私有属性 LINE\\LINEBot\\Response::$body
我还尝试使用 SO 上的答案将对象更改为数组,但未能解决它。
这可能是一个新手问题,但任何输入都将高度赞赏。谢谢
原文链接 https://stackoverflow.com/questions/70971301
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
- 如何创建一个 lua 脚本以针对特定键为 fluentbit 进行限流
- 如何在Lua中将变量从Lua推送到C ++
解决方案
查看文档,我们可以看到两个方法:
getRawBody
(https://github.com/line/line-bot-sdk-php/blob/0500634336ec1b524587a978b917b7b3a3679aef/src/LINEBot/Response.php#L74)getJSONDecodedBody
(https://github.com/line/line-bot-sdk-php/blob/0500634336ec1b524587a978b917b7b3a3679aef/src/LINEBot/Response.php#L84)因此,根据要求的不同,可以使用
$response->getRawBody()
或$response->getJSONDecodedBody()
中的任何一个。未成功的尝试
我的最初想法是通过以下方式实现:
json_decode(json_encode($response), true)['body']
但这不起作用,因为
private
成员没有生成到JSON中。所以,我接下来的想法是使用反射:$reflectionClass = new ReflectionClass('LINE\\LINEBot\\Response'); var_dump($reflectionClass->getProperty('body')->getValue($response));
然而,这也无法访问私有属性。