为了账号安全,请及时绑定邮箱和手机立即绑定

从测试站点返回的 JSON 字符串包含阻止 json_decode 工作的额外字符

从测试站点返回的 JSON 字符串包含阻止 json_decode 工作的额外字符

PHP
人到中年有点甜 2023-03-04 10:39:36
我正在尝试了解如何在服务器之间传输数据。在线有一个包含 json 数据的测试 API。我尝试了以下操作:-    <?php// Initiate curl session in a variable (resource) $curl_handle = curl_init();$url = "http://dummy.restapiexample.com/api/v1/employees"; // website sample API data// Set the curl URL option curl_setopt($curl_handle, CURLOPT_URL, $url);// This option will return data as a string instead of direct output curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);// Execute curl & store data in a variable $curl_data = curl_exec($curl_handle);curl_close($curl_handle);// Write the JSON string// echo $curl_data; // the above writes the JSON string ok// Now try decoding to PHP array$character = json_decode($curl_data); echo $character[1]->employee_name; // this throws an error 'Error: Cannot use object of type stdClass as array in C:\wamp64\www\curlex\curlget.php on line 24' ?>返回的字符串包含以下内容(为清楚起见,已删除为 2 个条目):-    {"status":"success","data":[{"id":"1","employee_name":"Tiger Nixon","employee_salary":"320800","employee_age":"61","profile_image":""},{"id":"2","employee_name":"Garrett Winters","employee_salary":"170750","employee_age":"63","profile_image":""}]}我想 json_decode 由于{"status":"success","data":序言而失败?请问如何解决?
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

你的问题是,你已经从函数中省略了第二个参数json_decode(),如果没有设置,它将把字符串解析为一个对象,而不是一个数组。


您可以在此处找到此功能的文档,在您的情况下,您正在寻找的是参数assoc。


另一方面,您显示的示例返回employee_name在另一个属性内查找的内容,而不是在主要属性(即data)中。


true尝试作为函数的第二个参数提供:


$character = json_decode($curl_data, true);

echo $character[1]['employee_name'];

但这只有在数据示例不准确的情况下才有效。如果该示例准确无误,要获取employee_name第二个数据元素的 ,请使用:


$character = json_decode($curl_data, true);

echo $character['data'][1]['employee_name'];

注意,php 数组是从零开始的,所以如果你想从数组中取出第一个元素,你应该引用它的第 0 个属性。


查看完整回答
反对 回复 2023-03-04
?
郎朗坤

TA贡献1921条经验 获得超9个赞

感谢所有提供帮助的人。我没有意识到返回的字符串是一个二维数组。我被网站误导了,它给了我免费提供的测试数据的链接。



查看完整回答
反对 回复 2023-03-04
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您可以像这样访问它:


$character = json_decode($curl_data); 

echo $character->data[1]->employee_name; 


查看完整回答
反对 回复 2023-03-04
  • 3 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信