You need to enable JavaScript to run this app. 如何从JSON结构取ci、whid值?json_decode报stdClass转字符串错误
优惠活动
大模型
产品
解决方案
定价
更多

如何从JSON结构取ci、whid值?json_decode报stdClass转字符串错误

JSON字段取值方法与类型转换报错解决方案

报错核心诱因

  • 原始JSON未作为合法PHP字符串传入json_decode:直接把JSON字面量写在赋值语句右侧,PHP语法无法识别,会触发解析阶段的类型转换错误
  • 解码后得到的stdClass对象未按语法规则取属性,直接将整个对象当做字符串参与输出、拼接操作,就会触发“stdClass类对象无法转换为字符串”的错误提示

正确操作步骤

  1. 构造合法的JSON字符串
    错误写法会直接导致解析异常:
    // 错误:直接将JSON结构作为变量值赋值,不符合PHP语法
    $info = {"ioc":true,"sid":3702088,"ci":3508,"cp":{"id":93006,"t":102,"s":true},"pr":25000,"whid":31472}
    
    正确写法需将JSON内容用引号包裹为字符串类型:
    $jsonString = '{"ioc":true,"sid":3702088,"ci":3508,"cp":{"id":93006,"t":102,"s":true},"pr":25000,"whid":31472}';
    
  2. 调用解码函数处理字符串
    给json_decode传入第二个参数true,可将解码结果转为关联数组,降低取值语法门槛:
    $decodedData = json_decode($jsonString, true);
    
  3. 提取目标字段值
    • 数值3508对应的字段为ci
    • 数值31472对应的字段为whid
      数组形式取值示例:
    $targetCi = $decodedData['ci']; // 输出结果为3508
    $targetWhid = $decodedData['whid']; // 输出结果为31472
    
    若使用默认的对象返回模式(不传第二个参数true),需按对象属性语法取值:
    $decodedObject = json_decode($jsonString);
    $targetCi = $decodedObject->ci;
    $targetWhid = $decodedObject->whid;
    

报错排查注意事项

  • 每次解码后可通过json_last_error()检查是否存在格式问题,避免拿到null值继续操作触发后续报错
  • 入参必须是字符串类型,禁止直接把数组、对象传入json_decode
  • 不要在未取具体属性的情况下,直接把stdClass对象参与字符串拼接、输出操作

内容的提问来源于stack exchange,提问作者Alfaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 21:27:04