【问题标题】:Store JSON as CSV with Javascript and PHP使用 Javascript 和 PHP 将 JSON 存储为 CSV
【发布时间】:2013-09-20 13:31:25
【问题描述】:

您好,我是 php 的新手,想通过 php 将来自 javascript 的 json-object 存储为 .csv 文件。

我有一个 JSON 对象,定义在一个名为 Logger.json 的文件中:

{
    "Name": "Dummy",
    "Uhrzeit": "1234",
    "Speed": "100",
    "Level": "11",
    "Szenen": {

    }
}

通过 $.getJson 读取文件后,我向对象添加了一些属性。 Logger.php 现在接收内容(首先它一直是空的,因为我错过了 json_decode($_POST['data'], true); 最后的布尔值 true),但存储的 .csv 只包含 ("Array, Array")。

我也尝试过其他内容类型,只发送 jsonText(不带 data=)或对象 obj 本身。任何想法为什么它不起作用?谢谢!

$.getJSON('xml/Logger.json', function(obj) {

        //add new scene:
        obj.Szenen["144"] = {};
        obj.Szenen["144"]["happy"] = {};
        obj.Szenen["144"]["happy"].type = "right";
        obj.Szenen["144"]["happy"].collected = "0";
        obj.Szenen["144"]["sad"] = {};
        obj.Szenen["144"]["sad"].type = "false";
        obj.Szenen["144"]["sad"].collected = "0";
        obj.Szenen["144"]["angry"] = {};
        obj.Szenen["144"]["angry"].type = "false";
        obj.Szenen["144"]["angry"].collected = "0";
        obj.Szenen["200"] = {};
        obj.Szenen["200"]["happy"] = {};
        obj.Szenen["200"]["happy"].type = "right";

        console.log(obj);

        var jsonText = JSON.stringify(obj);

        var request= new XMLHttpRequest();
        request.open("POST", "http://localhost/logger.php")
        request.setRequestHeader("Content-type", "application/x-www-form-urlencoded", true)


var data = "data="+jsonText;
request.send(data);

我的 logger.php 看起来像这样:

<?php

 $values = json_decode($_POST['data'], true);
 store($values);

function store($data) {
    $file = 'logs/UserLogging';

    $filename = $file."_".date("d-m-Y_H-i",time()).".csv";

    $fp = fopen($filename, 'w');
    foreach($data as $line){
        //$val = explode(",",$line);
        fputcsv($fp, $line);
    }    
    fclose($fp);    
}

?>

编辑: .csv 应该看起来像这样(但如果像“Name”或“Uhrzeit”这样的键也会出现在输出中,那将是完美的):

Dummy,1234,100,11;
144,happy,right,0,sad,false,0,angry,false,0;
200,happy,right ...

【问题讨论】:

  • 您还没有解释您希望最终 CSV 的样子吗?这听起来像把这个高级的子维度属性值数据变成一行文本
  • 抱歉,我尝试添加一个可能的 .csv 输出以及它的外观!但只是某种结构化输出以便在 Excel 中进一步处理就可以了。

标签: javascript php json csv


【解决方案1】:

您的 fputcsv syntax 不正确 - 参数 2 必须是一个数组(分解为逗号分隔值)。

例如,fputcsv([a,b,c]) 会将a,b,c 写入文件,后跟换行符。

您只需要将 JSON 解码的对象转换为数组。在不知道你想要的格式的情况下,这里有一个简单的例子:

...(在函数store)...

$fp = fopen($filename, 'w');
fputcsv($fp, (array)$data);
fclose($fp);

存储顶级键的 CSV。

【讨论】:

  • 感谢这对第一把钥匙的帮助!我会仔细看看 fputcsv!
  • 一切顺利吗?如果是,请随时接受我的回答,或添加其他信息,以便我帮助您得出结论!
猜你喜欢
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
相关资源
最近更新 更多