使用 PHP 解析 API 返回的 JSON 数据


Parse JSON data returned by API using PHP

我在这里使用API:http://developers.livechatinc.com/rest-api/#!chats

我正在尝试解析通过我的实时聊天服务提供商返回的数据。以下是成功调用 API 后返回的内容:

object(stdClass)#3 (3) {
  ["chats"]=>
  array(1) {
    [0]=>
    object(stdClass)#4 (17) {
      ["type"]=>
      string(4) "chat"
      ["id"]=>
      string(10) "MUQM3RLYBV"
      ["visitor_id"]=>
      string(22) "S1381706997.d8b6736611"
      ["agents"]=>
      array(1) {
        [0]=>
        object(stdClass)#5 (2) {
          ["display_name"]=>
          string(17) "Display Name"
          ["email"]=>
          string(30) "Email"
        }
      }
      ["supervisors"]=>
      array(0) {
      }
      ["rate"]=>
      string(10) "rated_good"
      ["duration"]=>
      int(50)
      ["group"]=>
      array(1) {
        [0]=>
        int(1)
      }
      ["started"]=>
      string(25) "Sun, 10/13/13 06:30:39 pm"
      ["pending"]=>
      bool(false)
      ["tags"]=>
      array(0) {
      }
      ["prechat_survey"]=>
      array(3) {
        [0]=>
        object(stdClass)#10 (3) {
          ["key"]=>
          string(5) "Name:"
          ["value"]=>
          string(12) "Demo Name"
          ["id"]=>
          string(18) "138133839826202879"
        }
        [1]=>
        object(stdClass)#11 (3) {
          ["key"]=>
          string(7) "E-mail:"
          ["value"]=>
          string(14) "demo@gmail.com"
          ["id"]=>
          string(18) "138133839826305342"
        }
        [2]=>
        object(stdClass)#12 (3) {
          ["key"]=>
          string(17) "Choose a Subject:"
          ["value"]=>
          string(4) "Math"
          ["id"]=>
          string(18) "138133839826304607"
        }
      }
      ["started_timestamp"]=>
      int(1381707039)
      ["ended_timestamp"]=>
      int(1381707089)
      ["ended"]=>
      string(25) "Sun, 10/13/13 06:31:29 pm"
    }
  }
  ["total"]=>
  int(1)
  ["pages"]=>
  int(1)
}

我很难从返回的数据中获取我需要获取的某些数据。这是我一直在使用的代码,但它不起作用:

<?php
require_once('lib/LiveChat_API.php');
try {
    $LiveChatAPI = new LiveChat_API();
    $output = $LiveChatAPI->chats->get();
    $array = json_decode($output, true); //Saves the returned JSON object as a multi-dimensional array
    echo $array['prechat_survey']['E-mail'];
} catch (Exception $e) {
    die($e->getCode().' '.$e->getMessage());
}
?>

例如,如何在"prechat_survey"下获取"电子邮件"的值?

这行得通吗?

$array['prechat_survey'][1]['value'];

更新

看起来您已经获得了一个对象,而不是 JSON 字符串......

尝试看看这是否有效:

try {
    $LiveChatAPI = new LiveChat_API();
    $output = $LiveChatAPI->chats->get();
    echo $output->prechat_survey[1]->value;
} catch (Exception $e) {
    die($e->getCode().' '.$e->getMessage());
}

Upadte2 我看到,有一个我不知道的聊天对象

试试这个:

echo $output->chats[0]->prechat_survey[1]->value;