【问题标题】:Zoho JSON result into CSV fileZoho JSON 结果转换为 CSV 文件
【发布时间】:2018-09-20 08:46:46
【问题描述】:

我正在尝试将 JSON 结果转换为 CSV 文件,但是,我一直在尝试获取非对象的属性

这里是代码

$url = file_get_contents('https://crm.zoho.com/crm/private/json/Contacts/getRecords?authtoken=myAPIkey&scope=crmapi');
$data = json_decode($url);
$r = $data->response->result->Contacts->row->no[1];
//Give our CSV file a name.
$csvFileName = 'example.csv';
//Open file pointer.
fopen($csvFileName,'a');

//Loop through the associative array.
foreach($r as $row) {
    $values = array_column($row['columns'], 'value');
    fputcsv($fp, $values);
} 


//Finally, close the file pointer.
fclose($fp);

这是 JSON 响应的示例

{
  "response": {
    "result": {
      "Contacts": {
        "row": [
          {
            "no": "1",
            "FL": [
              {
                "val": "CONTACTID",
                "content": "3508588000000206016"
              },
              {
                "val": "SMOWNERID",
                "content": "3508588000000176021"
              },
              {
                "val": "Contact Owner",
                "content": "Chris Yates"
              },
              {
                "val": "First Name",
                "content": "Bob"

当然,我希望它遍历每一行并保存到 CSV

提前致谢,我已经查看了一些关于 SO 的解决方案,但似乎没有一个适合我

【问题讨论】:

  • 您是否收到此行中的错误? $r = $data->response->result->Contacts->row->no[1];
  • @TamilvananN - 是的,我知道这是导致问题的原因,我似乎无法找到正确的结构
  • ->row->no[1]; 根据你的 json 结构是错误的
  • 是的,我知道 - 我通常不会使用 $data->response->result->Contacts->row[1]->FL[2]->content;要从单个行和特定元素中获取数据,但我正在努力解决这个问题
  • “row”中除了“no”和“FL”还有其他键吗?

标签: php json csv zoho


【解决方案1】:

让我们检查下面的代码。

<?php
$json = '{"response":{"result":{"Contacts":{"row":[{"no":"1","FL": 
[{"val":"CONTACTID","content":"3508588000000206016"}, 
{"val":"SMOWNERID","content":"3508588000000176021"},{"val":"Contact 
Owner","content":"Chris Yates"},{"val":"First Name","content":"Bob"}]}]}}}}';
$data = json_decode($json,true);
$rows = $data['response']['result']['Contacts']['row'];
$csvFileName = 'example.csv';
$fp = fopen($csvFileName,'a');
foreach($rows as $row) {
foreach($row['FL'] as $fls) {
    fputcsv($fp, $fls);
}
}
fclose($fp);
?>

【讨论】:

  • 是的,我遇到的问题是,如果没有为元素定义值,例如,如果 Account Name 为空,则会将 csv 文件搞砸,因为数据与我正在定义的其他行不匹配元素,如果它是空白的,它将被设置为 '' 所以 $blah = '' 但至少当我构建数据字符串时它仍然会计算列
  • 我会接受你的回答,因为它确实有效,但并不是我需要的万能证明,不过感谢你的帮助:)
猜你喜欢
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多