【问题标题】:Convert csv to keyed json将 csv 转换为键控 json
【发布时间】:2017-03-02 13:12:14
【问题描述】:

我有一个 csv 文件,其中包含如下数据,但没有列标题

100271311,90445XXXX,Active
100271400,99456XXXX,Cancelled
100271552,94280XXXX,Pending

我想把上面的转换成下面这样的 php json 输出

{
   "100271311": {
      "FIELD2": "90445XXXX",
      "FIELD3": "Active"
   },
   "100271400": {
      "FIELD2": "99456XXXX",
      "FIELD3": "Cancelled"
   },
   "100271552": {
      "FIELD2": "94280XXXX",
      "FIELD3": "Pending"
   }
}

请帮忙

【问题讨论】:

    标签: php json csv


    【解决方案1】:

    你可以试试:

      $file = file('pathtoyour/file.csv');
      $json = [];
      foreach ($file as $key => $row) {
        $cols = explode(',', $row);
        $json[trim($cols[0])] = [
          'FIELD2' => trim($cols[1]),
          'FIELD3' => trim($cols[2]),
        ];
      }
      die(json_encode($json));
    

    【讨论】:

    • 非常感谢您的快速回复
    【解决方案2】:

    你可以试试这个:

    $file  = "csvfile.csv";
    $csv   = file_get_contents($file);
    $array = array_map("str_getcsv", explode("\n", $csv));
    $json  = json_encode($array);
    print_r($json);
    

    注意: str_getcsv 解析 CSV 格式字段的字符串输入,并返回包含读取字段的数组。

    【讨论】:

      【解决方案3】:

      使用fileexplodejson_encode函数的解决方案:

      $lines = file("./data/test.csv");  // change with your actual file path
      $result = [];
      
      foreach ($lines as $line) {
          list($k, $f2, $f3) = explode(',', $line);
          $result[$k] = ['FIELD2' => $f2, 'FIELD3' => trim($f3)];
      }
      
      print_r(json_encode($result, JSON_PRETTY_PRINT));
      

      输出:

      {
          "100271311": {
              "FIELD2": "90445XXXX",
              "FIELD3": "Active"
          },
          "100271400": {
              "FIELD2": "99456XXXX",
              "FIELD3": "Cancelled"
          },
          "100271552": {
              "FIELD2": "94280XXXX",
              "FIELD3": "Pending"
          }
      }
      

      【讨论】:

        【解决方案4】:

        您可以使用此站点将 csv 转换为键控 JSON。

        https://www.convertcsv.com/csv-to-json.htm

        转换方式有很多选择。只需选择转换类型按钮即可。

        【讨论】:

          猜你喜欢
          • 2015-04-23
          • 1970-01-01
          • 1970-01-01
          • 2021-11-02
          • 1970-01-01
          • 2015-08-23
          • 2019-08-21
          • 2011-04-27
          相关资源
          最近更新 更多