douou1891 2014-02-18 15:29
浏览 57
已采纳

已成功获取JSON PHP数据,但我无法访问它

I am using PHP to make a HTTP request to another web server to retrieve JSON data, the request seems to work and I am able to use var_dump to see the data but I am unsure I can access the data.

This is my code for obtaining the data:

$response = Requests::get($mydetails);

$array1 = json_decode(json_encode($response), true);

Nearly all of the things I have tried (such as echo $array1->operation->result->status) give me the same error message:

PHP Notice:  Trying to get property of non-object

This is the first few lines of the var_dump output:

 array(9) {
  ["body"]=>
  string(7017) "{"operation":{"result":{"status":"Success","message":"Request details listed successfully"},"details":[{"fields":[{"name":"requesttype","value":"Incident","type":"Pick List","displayvalue":"Request Type","allowedvalues":["Incident","Request for Change","Request For Information","Request for Work"],"mandatory":"false"},{"name":"impact","value":"Affects User","type":"Pick List","displayvalue":"Impact","allowedvalues":["Affects Business","Affects Department","Affects Group","Affects User"],"mandatory":"false"},{"name":"status","value":"Closed","type":"Pick List","displayvalue":"Status","allowedvalues":["Awaiting Customer","Awaiting Third Party","Closed","More Information Required","Open","Resolved"],"mandatory":"false"},{"name":"impactdetails","value":"-","type":"Multi Line","displayvalue":"Impact Details","allowedvalues":[""],"mandatory":"false"},{"name":"mode","value":"Phone Call","type":"Pick List","displayvalue":"Mode","allowedvalues":["Customer Portal","E-Mail","Fax","On-Site Request","Phone Call"],"mandatory":"false"},{"name":"priority","value":"Severity 2","type":"Pick List","displayvalue":"Priority","allowedvalues":["National Level 1","National Level 2","Request for Change","Severity 1","Severity 2","Severity 3","Severity 4"],"mandatory":"false"},{"name":"department","value":"General Practice","type":"Not Editable","displayvalue":"Department","allowedvalues":[""],"mandatory":"true"},{"name":"requesteremail","value":"","type":"Not Editable","displayvalue":"E-mail","allowedvalues":[""],"mandatory":"false"},{"name":"requestercontactnumber","value":"","type":"Not Editable","displayvalue"
  • 写回答

2条回答 默认 最新

  • duanji7881 2014-02-18 15:32
    关注

    The structure after the decoding is an array, so you should access it with array operators like $array1['body']['operation']['result']['status'], not with -> - which is object traversing operator. You could also decode it as an object:

    $response = Requests::get($mydetails);
    
    $array1 = json_decode(json_encode($response));
    

    But your response seems to already be an array, so just access it, without re-encoding, maybe?

    edit: After doing some assumptions about your code, you should maybe do this:

    $response = Requests::get($mydetails);
    
    $array1 = json_decode($response['body'], true);
    var_dump($array1); // looks ok?
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在不同的执行界面调用同一个页面
  • ¥20 基于51单片机的数字频率计
  • ¥50 M3T长焦相机如何标定以及正射影像拼接问题
  • ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
  • ¥20 关于#stm32#的问题:STM32串口发送问题,偶校验(even),发送5A 41 FB 20.烧录程序后发现串口助手读到的是5A 41 7B A0
  • ¥15 C++map释放不掉
  • ¥15 Mabatis查询数据
  • ¥15 想知道lingo目标函数中求和公式上标是变量情况如何求解
  • ¥15 关于E22-400T22S的LORA模块的通信问题
  • ¥15 求用二阶有源低通滤波将3khz方波转为正弦波的电路