【问题标题】:php to convert CSV to JSON with nested objectsphp 使用嵌套对象将 CSV 转换为 JSON
【发布时间】:2014-03-06 22:29:18
【问题描述】:

我有这样的 csv 文件:

data,IF,VVS1,VVS2
D,23,17,15
E,17,15,14

我需要将此 CSV 转换为 JSON,但看起来像这样:

{“D”:{“IF”:“23”,“VVS1”:“17”,“VVS2”:“15”},“E”:{“IF”:“17”,“VVS1” :"15", "VVS2":"14"}}

有什么帮助吗?

【问题讨论】:

  • CSV to JSON with PHP? 的可能重复项
  • 那些答案是将每一行设置为一个对象,但问题是我需要第一列作为嵌套对象的“键”。

标签: php json


【解决方案1】:

/* 假设 csv 文件是 mydata.scv */

<?php
 $mydata = array();

 if($file = fopen("mydata.csv","r")){
   $csvheaders = fgetcsv($file);
   while(($row = fgetcsv($file)) !== FALSE){
     $arr = array();
     for($i=1; $i<count($csvheaders); $i++){
      $arr[$csvheaders[$i]] = $row[$i];
     } 
     $mydata[$row[0]] = $arr;
    }
  fclose($file);
  // encode $mydata array into json to get result in the required format
  $mydatainformat = json_encode($mydata);
  echo $mydatainformat; // This is your output.
 }
?>

【讨论】:

    【解决方案2】:

    也许对你有帮助,但我建议添加错误处理。

    <?php
    
    $file = fopen('test.csv', 'r');
    
    $header = fgetcsv($file);
    array_shift($header);
    
    $data = array();
    
    while ($row = fgetcsv($file))
    {
      $key = array_shift($row);
    
      $data[$key] = array_combine($header, $row);
    }
    
    echo json_encode($data);
    
    fclose($file);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多