如何将API返回的JSON字符串转为PHP数组
在PHP中将JSON字符串转为数组的方法
刚好我之前也遇到过类似需求,PHP里处理JSON转数组其实很简单,核心就是用json_decode()这个函数,跟JS里的JSON.parse()思路差不多,但要注意一个关键参数。
先看你的示例JSON字符串,我们直接上代码演示:
首先定义你的JSON字符串:
$jsonString = '{ "code":"000", "message":"XXX", "date":"2018-05-17", "hour":"09:16:09", "revision":"", "server":"XX", "content":{ "nome":{"info":"SIM","conteudo":[{"field1":"XXXX","field2":"XX"}]} } }';
接下来用json_decode()转换,一定要把第二个参数设为true,这样返回的就是关联数组,而不是默认的对象:
$responseArray = json_decode($jsonString, true);
现在你就可以像你期望的那样调用数组元素了:
// 获取code值 echo $responseArray['code']; // 输出 000 // 获取嵌套的info值 echo $responseArray['content']['nome']['info']; // 输出 SIM // 遍历conteudo里的子元素 foreach ($responseArray['content']['nome']['conteudo'] as $item) { echo $item['field1']; // 输出 XXXX }
额外提示:错误处理
如果你的JSON格式有问题(比如语法错误),json_decode()会返回null,这时候可以用这两个函数排查问题:
$responseArray = json_decode($jsonString, true); if (json_last_error() !== JSON_ERROR_NONE) { echo 'JSON解析失败:' . json_last_error_msg(); }
要是你忘了加第二个参数true,返回的会是一个stdClass对象,调用方式就变成$responseObj->code这种对象属性访问的形式,不过既然你想要数组调用,记得加上那个参数就好啦。
内容的提问来源于stack exchange,提问作者Luan Wincardt
相关产品推荐
相关产品推荐

