0

この有効な JSON 文字列があり、多くの行を持つことができます。私はちょうど断片を投稿しました。

var jsonStr = ["{\"r1\":768,\"r2\":1,\"r3\":\"System Admin\",\"r4\":\"2013-06-08T05:51:23.000Z\",\"r5\":1,\"r6\":\"System Admin\",\"r7\":false}"]

上記をCSVに送信する必要があります。この投稿をフォローしました

CSVはr1、r2、r3..でエクスポートされますが、キーr1、r3、r3..などは必要ありません。値が必要なだけです。私は同じ例に従いました。

ポインタはありますか?

var jsonStr = ["{\"r1\":768,\"r2\":1,\"r3\":\"System Admin\",\"r4\":\"2013-06-08T05:51:23.000Z\",\"r5\":1,\"r6\":\"System Admin\",\"r7\":false}"]

DownloadJSON2CSV(jsonStr);

function DownloadJSON2CSV(objArray) {
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

    var str = '';
    for (var i = 0; i < array.length; i++) {
        var line = '';
        var tmp = 0;
        var nx = 1;

        for (var index in array[i]) {
            line += array[i][index];
            if (tmp == 0) {
                nx = array[0][3];
            }
            tmp++;
        }
        line.slice(0, line.Length - 1);
        str += line + '\r\n';

    }
    window.open("data:text/csv;charset=utf-8," + escape(str))
}

これがフィドルです:http://jsfiddle.net/ufjUY/

4

2 に答える 2

0

次のことを試すことができます。

var jsonStr = "[{\"r1\":768,\"r2\":1,\"r3\":\"System Admin\",\"r4\":\"2013-06-08T05:51:23.000Z\",\"r5\":1,\"r6\":\"System Admin\",\"r7\":false}]";

DownloadJSON2CSV(jsonStr);

function DownloadJSON2CSV(objArray) {
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

    var str = '';

    for (var i = 0; i < array.length; i++) {
        var line = '';
        var tmp = 0;
        var nx=1;

        for (var index in array[i]) {
            switch( index ) {
                case "r1": 
                case "r2": 
                case "r5": line += array[i][index]; break;
                case "r7": line += (array[i][index]==false) ? -1 : 0; break;
                case "r3":
                case "r4":
                case "r6": line += '"'+array[i][index]+'"';
            }
            line += ",";
        }
        str += line + '\r\n';
    }
//        window.open( "data:text/csv;charset=utf-8," + escape(str))
//        document.getElementById('comments').innerHTML = nx;
}
于 2013-07-19T12:14:52.350 に答える
0

わかりました。JSON データを制御できないため、文字列化された JSON オブジェクトの配列が与えられていると仮定します。

その場合は、この JSFiddle ( http://jsfiddle.net/ufjUY/10/ )をご覧ください。

出力をどのようにフォーマットする必要があるのか​​ わからないので、当面は出力をコンマで区切ります。

また、単純化するために、フィドルにある不要なコードをすべて取り除きました。

var jsonStr = ["{\"r1\":768,\"r2\":1,\"r3\":\"System Admin\",\"r4\":\"2013-06-08T05:51:23.000Z\",\"r5\":1,\"r6\":\"System Admin\",\"r7\":false}"]

DownloadJSON2CSV(jsonStr);

function DownloadJSON2CSV(objArray)
{
    var str = '';
    for(var i = 0; i < objArray.length; i++)
    {
        var array = typeof objArray[i] != 'object' ? JSON.parse(objArray[i]) : objArray[i]; 
        var line = '';

        for (var index in array)
        {
            line += array[index] + ",";
        }

        line.slice(0,line.Length-1); 
        str += line + '\r\n';
    }

    window.open( "data:text/csv;charset=utf-8," + escape(str))        
}

お役に立てれば。

于 2013-07-19T12:13:11.127 に答える