用php(不是脚本)将JSON转换为CSV


Convert JSON to CSV with php (not a script)

我的每个用户都有一个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_decode($data, true)时,你会得到错误。您必须决定如何格式化其他数据,如"营养物"。我希望你明白了。问题是它期望的是一个原始数据数组,而不是一个包含另一个数组的数组。