2017-06-06 17 views
0

私はJSONデータを持っていますが、残念ながらCSVに解析する方法はありません。私はちょうど勉強を始めて、JSONについての全くの手がかりを持っていません。誰かがそれを手がかりにすることができれば幸いです。複雑なJSONをCSV形式に変換する方法

データは以下のように思える:

{ "名前":[ "ノヴィ"、 "スターリー"]、 "学生名":[[ "ALA"、 "バーシア"、 ""]、[ [[1,2,0]、[2,2]]、[Students surnames]:[["" alowa "、" basiowa "、"]]、[basia]

function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) { 
var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData; 
var CSV = ''; 
CSV += ReportTitle + '\r\n\n'; 
if (ShowLabel) { 
    var row = ""; 
    //This loop will extract the label from 1st index of on array 
    for (var index in arrData[0]) { 
     //Now convert each value to string and comma-seprated 
     row += index + ','; 
    } 
    row = row.slice(0, -1); 
    //append Label row with line break 
    CSV += row + '\r\n'; 
} 
//1st loop is to extract each row 
for (var i = 0; i < arrData.length; i++) { 
    var row = ""; 
    //2nd loop will extract each column and convert it in string comma-seprated 
    for (var index in arrData[i]) { 
     row += '"' + arrData[i][index] + '",'; 
    } 
    row.slice(0, row.length - 1); 
    //add a line break after each row 
    CSV += row + '\r\n'; 
} 
if (CSV == '') {   
    alert("Invalid data"); 
    return; 
} 
var fileName = "Zestawienie_"; 
fileName += ReportTitle.replace(/ /g,"_"); 
var uri = 'data:text/csv;charset=utf-8,' + escape(CSV); 
var link = document.createElement("a");  
link.href = uri; 
link.style = "visibility:hidden"; 
link.download = fileName + ".csv"; 
document.body.appendChild(link); 
link.click(); 
document.body.removeChild(link); 

}

:[ "basiowa"、 "basiowaは"]]}

私はこのパーサを試し

しかし、出力(私はすべて1行に持っている)、CSVでのように見え、その非常に醜い:

「ノヴィ、スタリー」、「ALA、バーシア,,バーシア、バーシア」、 "1,2,0 、2,2" 、 "alowa、basiowa ,, basiowa、basiowa"

とにかくこの関数はそれのようにJSONのために働く:

{ "車": "BMW"、 "日付": "30、Jul 2013 09:24 AM"、 "Location": "Delhi、ニューデリー、ニューデリーのHauz Khas"、 "Speed":42} {"車両": "Audi"、 "Date" 30、Jul 2013 09:24 AM "、" Location " : "Hauz Khas、ニューデリー、デリー、インド"、 "スピード":42}。

ネストされたオブジェクトを扱うことはできないようです。ここで

+0

「誰かがスクリプトを書くことができれば素晴らしいだろう」---あなたのためにそれをする人を雇うことができる。 – zerkms

+0

HTML表現が必要な場合は、「\ r \ n」を「
」に変更してください。 – FieryCat

+0

@zerkms悪い表現を申し訳ありません。 – mrmumu24

答えて

0

ファイルfilter.jq

keys_unsorted as $k 
| $k, ([.[]] | transpose[]) 
| map(tostring)  
| @csv 

data.jsonが含まれている場合jq

を使用したソリューションであることはあなたのサンプルデータが、コマンド

jq -M -r -f filter.jq data.json  

"names","Students names","Students indexes","Students surnames" 
"nowy","[""ala"",""basia"",""""]","[1,2,0]","[""alowa"",""basiowa"",""""]" 
"stary","[""basia"",""basia""]","[2,2]","[""basiowa"",""basiowa""]" 
が生成されます含まれています
関連する問題