访问/读取JSON层次结构

时间:2016-05-19 15:54:14

标签: arrays json loops hierarchy

我正试图通过JSON访问联系人列表。我很难理解JSON层次结构并访问对象:

$token="25948503485mytokenhere003403403";
$url = "https://crm.zoho.com/crm/private/json/Accounts/getRecords?";
$url .= "authtoken=".$token."&scope=crmapi";
$json = file_get_contents($url);
$contacts = json_decode($json);

$cleanObj = $contacts->response->result->Accounts->row;

function getCompany($obj, $part) {
    $innerObj = $obj->FL;
    foreach ($innerObj as $c)  {
        if ($c['val'] == $part) {
            return $c['content'];
        }
    }
}

$company = getCompany($cleanObj[0], "Company");

echo "<pre>";
print_r($cleanObj);
echo "</pre>";

以下是向您显示层次结构的原始响应:

Array
(
[0] => stdClass Object
    (
        [no] => 1
        [FL] => Array
            (
                [0] => stdClass Object
                    (
                        [content] => 1900238000000115001
                        [val] => ACCOUNTID
                    )

                [1] => stdClass Object
                    (
                        [content] => 1900238000000097003
                        [val] => SMOWNERID
                    )

                [2] => stdClass Object
                    (
                        [content] => chase
                        [val] => Account Owner
                    )

                [3] => stdClass Object
                    (
                        [content] => Test Company
                        [val] => Account Name
                    )

                [4] => stdClass Object
                    (
                        [content] => www.google.com
                        [val] => Website
                    )

                [5] => stdClass Object
                    (
                        [content] => 0
                        [val] => Account Number
                    )

                [6] => stdClass Object
                    (
                        [content] => 0
                        [val] => Employees
                    )

                [7] => stdClass Object
                    (
                        [content] => 0
                        [val] => Annual Revenue
                    )

                [8] => stdClass Object
                    (
                        [content] => 0
                        [val] => SIC Code
                    )

                [9] => stdClass Object
                    (
                        [content] => 1900238000000097003
                        [val] => SMCREATORID
                    )

                [10] => stdClass Object
                    (
                        [content] => chase
                        [val] => Created By
                    )

                [11] => stdClass Object
                    (
                        [content] => 1900238000000097003
                        [val] => MODIFIEDBY
                    )

                [12] => stdClass Object
                    (
                        [content] => chase
                        [val] => Modified By
                    )

                [13] => stdClass Object
                    (
                        [content] => 2016-05-18 13:50:57
                        [val] => Created Time
                    )

                [14] => stdClass Object
                    (
                        [content] => 2016-05-18 13:50:57
                        [val] => Modified Time
                    )

                [15] => stdClass Object
                    (
                        [content] => 0
                        [val] => Billing State
                    )

                [16] => stdClass Object
                    (
                        [content] => 2016-05-18 13:50:57
                        [val] => Last Activity Time
                    )

            )

    )

我正在尝试访问&#34; ACCOUNTID&#34;等字段。 &#34; SMOWNERID&#34; &#34;帐户所有者&#34; &#34;帐户名称&#34;那个级别的等等。

此代码返回错误&#34;致命错误:无法使用stdClass类型的对象作为数组&#34;:

$company = getCompany($cleanObj[0], "Company");

有人可以帮助我访问每个联系人对象并能够循环并输出它们吗?

1 个答案:

答案 0 :(得分:0)

我最终搞清楚了。使用:

$co_name = $contacts->response->result->Accounts->row->FL[3]->content

作为公司的路径

结果显示结果 - &gt;必须将潜在客户更改为结果 - >帐户才能使其正常阅读。