php如何优雅的处理api中npe的问题

长脚的海星星
  • 17

跟java对接api。java那边序列化后有些为空的字段就直接不存在json内。比如有值的情况

  {
      "data":{
          "type":"xxx",
          "title":"xxx",
          "child":{
              "type":"xxx",
              "title":"xxx",
          }
       },
       "result":"success"
  }

没有值的情况:

{
  "result":"success"
}

没有指定情况下连data丢不存。如何优雅的处理这种npe问题,网上找不到json转实体类php的工具。

回复
阅读 1.1k
2 个回答

json_decode 后再包装一层,判断是否有 data ,没有就给填充一个 NULL 就不好了

$json = json_decode($resp, true);
$json['data'] = $json['data'] ?? null;
var_dump($data);

上面的图示的例子说实话不太规范,正常是这样处理的

{
    "errno":0,
    "errmsg":"",
    "data":{
    
    }
}

会有errno做判断,如果有数据正常返回的话errno为0,如果没有正常数据返回的话errno为其他的自定义值,errmsg为报错信息

如果对方不改接口的话就decode后判断下data字段是否存在empty($ret['data']),但是不建议这样做

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏