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

时间:2014-08-11 21:38:49

标签: php json csv

我的每个用户都有一个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);,我会收到错误“数组到字符串转换”

感谢任何帮助,如果需要更多信息,请与我们联系。谢谢!

1 个答案:

答案 0 :(得分:0)

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