【问题标题】:Convert JSON to CSV with php (not a script)使用 php(不是脚本)将 JSON 转换为 CSV
【发布时间】:2014-08-11 21:38:49
【问题描述】:

我的每个用户都有一个 JSON 编码字符串保存到一个名为“json”的字段中。会有多个多维项目,但nutrients 并不总是一个元素。这是格式:

$arr = array(
        0 => array(
            'name' => Input::get('name'),
            'amount' => 5,
            'time' => '2:00 am',
            'nutrients' => array(
                'Macro' => array(
                    'water' => 0,
                    'carbs' => 0,
                ),
                'Micro' => array(
                    'zinc' => 0,
                )
            )
        );

$user->json = json_encode($arr);
$user->save();

我想(从另一个角度)将$user->json 转换为 CSV 文件。这是我在网上找到的最接近的代码,但我仍然得到一个错误('fputcsv() 期望参数 2 是数组,给定对象'):

$user = Auth::user();

$json_obj = json_decode ($user->json);

$fp = fopen('file.csv', 'w');

foreach ($json_obj as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

如果我使用$json_obj = json_decode ($user->json, true);,我会收到错误“数组到字符串的转换”

感谢任何帮助,如果需要更多信息,请告诉我。谢谢!

【问题讨论】:

  • $json_obj = json_decode($user->json, true)(true 表示解码为关联数组,而不是对象)
  • 对不起,我应该提到我也尝试过,但我收到错误 Array to string conversion(它没有告诉我确切的数组/字符串)。

标签: php json csv


【解决方案1】:

好吧,您的数组中有数组...这就是您在执行json_decode($data, true) 时收到错误的原因。您必须决定如何格式化其他数据,例如“营养素”。 我希望你明白这一点。问题是它需要一个原始数据数组,而不是一个包含另一个数组的数组。

【讨论】:

  • 我完全明白我有一个多维数组,在我的第二句话中已经说明了。重新格式化我的阵列并不是一个真正的选择,我认为这不是一个可以接受的答案。我知道将我必须的 JSON 转换为 CSV 并非不可能,这在 php 中是不可能的吗?我需要以某种方式解决问题吗?我认为这作为评论会更好,因为它对我没有丝毫帮助。
猜你喜欢
  • 2014-04-21
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 2016-09-02
相关资源
最近更新 更多