【问题标题】:Reading JSON Hierarchies to Target Fields and Loop Through Each Result将 JSON 层次结构读取到目标字段并遍历每个结果
【发布时间】:2016-05-16 19:00:43
【问题描述】:

我正在使用 Zoho CRM API 来查看联系人。我以 JSON 格式返回响应。这是我的代码:

$token="03430403423mysecrettokenhere03403";
$url = "https://crm.zoho.com/crm/private/json/Leads/getRecords?";
$url .= "authtoken=".$token."&scope=crmapi";
$json = file_get_contents($url);
$obj = json_decode($json);
echo "<pre>";
print_r($obj);
echo "</pre>";

foreach ($obj as $testme) {
    $test = $obj->results[0]->Company;
    echo '<br><br>';
    echo "test: " . $test;
}

原始响应:

stdClass Object
(
[response] => stdClass Object
    (
        [result] => stdClass Object
            (
                [Leads] => stdClass Object
                    (
                        [row] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [no] => 1
                                        [FL] => Array
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [content] => 1900238000000103005
                                                        [val] => LEADID
                                                    )

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

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

                                                [3] => stdClass Object
                                                    (
                                                        [content] => Testttt
                                                        [val] => Company
                                                    )

                                                [4] => stdClass Object
                                                    (
                                                        [content] => Test
                                                        [val] => First Name
                                                    )

                                                [5] => stdClass Object
                                                    (
                                                        [content] => Lead
                                                        [val] => Last Name
                                                    )

                                                [6] => stdClass Object
                                                    (
                                                        [content] => testlead@test.com
                                                        [val] => Email
                                                    )

                                                [7] => stdClass Object
                                                    (
                                                        [content] => 0
                                                        [val] => No of Employees
                                                    )

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

                                                [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-16 16:04:37
                                                        [val] => Created Time
                                                    )

                                                [14] => stdClass Object
                                                    (
                                                        [content] => 2016-05-16 16:04:37
                                                        [val] => Modified Time
                                                    )

                                                [15] => stdClass Object
                                                    (
                                                        [content] => false
                                                        [val] => Email Opt Out
                                                    )

                                                [16] => stdClass Object
                                                    (
                                                        [content] => 2016-05-16 16:04:37
                                                        [val] => Last Activity Time
                                                    )

                                            )

                                    )

                                [1] => stdClass Object
                                    (
                                        [no] => 2
                                        [FL] => Array
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [content] => 1900238000000100023
                                                        [val] => LEADID
                                                    )

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

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

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

                                                [4] => stdClass Object
                                                    (
                                                        [content] => Lead
                                                        [val] => Last Name
                                                    )

                                                [5] => stdClass Object
                                                    (
                                                        [content] => testlead@test.com
                                                        [val] => Email
                                                    )

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

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

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

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

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

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

                                                [12] => stdClass Object
                                                    (
                                                        [content] => 2016-05-16 13:15:29
                                                        [val] => Created Time
                                                    )

                                                [13] => stdClass Object
                                                    (
                                                        [content] => 2016-05-16 13:15:29
                                                        [val] => Modified Time
                                                    )

                                                [14] => stdClass Object
                                                    (
                                                        [content] => false
                                                        [val] => Email Opt Out
                                                    )

                                                [15] => stdClass Object
                                                    (
                                                        [content] => 2016-05-16 13:15:29
                                                        [val] => Last Activity Time
                                                    )

                                            )

                                    )

                            )

                    )

            )

        [uri] => /crm/private/json/Leads/getRecords
    )

)

test:

问题一:

如何读取层次结构并定位“公司”和“名字”“姓氏”等字段。我希望能够为每个联系人输出这些字段。

$test = $obj->response->results->Accounts->row;

这是我能做到的。

问题 2:

我目前有两个联系人在那里进行测试。如何循环遍历每一个?

foreach ($obj as $testme) {
    $test = $obj->results[0]->Company;
    echo '<br><br>';
    echo "test: " . $test;
}

上面的当前循环只返回一个对象。

【问题讨论】:

  • 在您的问题中发布(部分)JSON 响应。许多 SO 用户不喜欢点击未知的站外链接。
  • 感谢您的建议。仍在学习 SO 方式!我编辑了帖子以显示原始响应
  • 此 JSON 响应中的公司在哪里?
  • 不确定它是如何被省略的......但我更新了响应以显示它。其 [3]。并且只显示第一个接触对象
  • Cleary $obj->results[0]->公司不是正确的路径,但我不明白如何阅读层次结构@EatPeanutButter

标签: php json loops hierarchy


【解决方案1】:

好的,假设这些 JSON 返回数组总是以相同的方式返回,你可以做这样的事情。首先,通过剥离所有包装垃圾来清理该返回对象:

$cleanObj = $return->response->results->Leads->row;

然后使用一个简单的函数循环遍历每个联系人的数组:

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

现在您可以传入其中一个联系人和您想要的部分。

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

未经测试(主要是因为我不想复制数据转储),但这应该从您的第一个联系人那里获取“Testttt”。

至于您的第二个问题,您可以简单地遍历$cleanObj 数组来访问您的所有联系人。代替$cleanObj[0],使用$cleanObj[1] 等等。

【讨论】:

  • 感谢您的帮助!不过,我收到“foreach 提供的参数无效”错误..
  • var_dump() $innerObj 和 $obj 以确保路径正确。您想要的数据周围有很多层。它们可能需要调整。
  • 两个变量都为 NULL 和 NULL
  • 可能想要将 $cleanObj 更改为 $return-&gt;response-&gt;results-&gt;Leads-&gt;row;(固定大小写)
  • 当然,将$return 更改为您所称的解码后的 JSON
猜你喜欢
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多