PHP调用jsonRPC接口取jwt报Illegal string offset警告如何解决
PHP读取JSON-RPC接口返回jwt字段报错解决方案
错误原因
$response->getRpcResult()返回的是JSON格式字符串,并非PHP关联数组,所以无法直接用["jwt"]的方式读取字段。你打印时看到的{"jwt": "EXAMPLE"}是字符串的输出内容,不是PHP可直接操作的数组/对象结构。
解决步骤
先使用json_decode()将JSON字符串转为PHP可操作的结构,再读取对应字段即可。
方式1:转为关联数组读取
// 1. 获取接口返回的JSON字符串 $rpcResult = $response->getRpcResult(); // 2. 转为关联数组,第二个参数传true表示返回数组格式 $resultArr = json_decode($rpcResult, true); // 3. 读取jwt字段,用??语法处理字段不存在的情况避免报错 $token = $resultArr['jwt'] ?? '';
方式2:转为对象读取
如果习惯用对象属性的方式取值,去掉json_decode的第二个参数即可:
$rpcResult = $response->getRpcResult(); $resultObj = json_decode($rpcResult); $token = $resultObj->jwt ?? '';
健壮性优化
建议增加JSON解析校验逻辑,避免接口返回异常格式数据时引发新的报错:
$rpcResult = $response->getRpcResult(); $resultArr = json_decode($rpcResult, true); if (json_last_error() !== JSON_ERROR_NONE) { // JSON解析失败的自定义处理逻辑,例如赋默认值、抛异常 $token = ''; } else { $token = $resultArr['jwt'] ?? ''; }
内容的提问来源于stack exchange,提问作者Melchia
相关产品推荐
相关产品推荐

