2016-04-08 20 views
0

誰かがJSONに配列や辞書付きのCSVファイルをどのように変換できるのかアドバイスをお願いします。 配列や辞書の変換については言及していないので、私は似たような質問をいくつか見てきました。CSV(配列と辞書)値をJSONに変換する方法

ここには配列と辞書を持つサンプルのCSVテキストがありますが、このCSVテキストを作成したExcelファイル(画像として表示)もあります。

説明のために、フィールド数と複雑さが限られています。私は変換の仕事をすることができるコードまたはツールコンバータのスニペットがあるのだろうかと思います。

FYI:情報をCSVファイルに変換してデータベースに読み込みます。

firstName,lastName,address 
John,Baker,Newyork 
Paul,Fisher,Paris 
Gabriel,Solksi,[location:London, postcode:EC17DC] 
Laurene,smith,{location:Beijing, pincode:512389, alternateNames:[risingCity, futureCity]} 

excel file that used to convert to CSV

答えて

1

こちらをご覧http://jsfiddle.net/sturtevant/AZFvQ/を持っています。このリンクには、CSVのテキストをJSONに変換するのに必要なコードがあります。あなたはまた、PapaParse

function CSVToArray(strData, strDelimiter) { 
    // Check to see if the delimiter is defined. If not, 
    // then default to comma. 
    strDelimiter = (strDelimiter || ","); 
    // Create a regular expression to parse the CSV values. 
    var objPattern = new RegExp((
    // Delimiters. 
    "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" + 
    // Quoted fields. 
    "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" + 
    // Standard fields. 
    "([^\"\\" + strDelimiter + "\\r\\n]*))"), "gi"); 
    // Create an array to hold our data. Give the array 
    // a default empty first row. 
    var arrData = [[]]; 
    // Create an array to hold our individual pattern 
    // matching groups. 
    var arrMatches = null; 
    // Keep looping over the regular expression matches 
    // until we can no longer find a match. 
    while (arrMatches = objPattern.exec(strData)) { 
     // Get the delimiter that was found. 
     var strMatchedDelimiter = arrMatches[1]; 
     // Check to see if the given delimiter has a length 
     // (is not the start of string) and if it matches 
     // field delimiter. If id does not, then we know 
     // that this delimiter is a row delimiter. 
     if (strMatchedDelimiter.length && (strMatchedDelimiter != strDelimiter)) { 
      // Since we have reached a new row of data, 
      // add an empty row to our data array. 
      arrData.push([]); 
     } 
     // Now that we have our delimiter out of the way, 
     // let's check to see which kind of value we 
     // captured (quoted or unquoted). 
     if (arrMatches[2]) { 
      // We found a quoted value. When we capture 
      // this value, unescape any double quotes. 
      var strMatchedValue = arrMatches[2].replace(
      new RegExp("\"\"", "g"), "\""); 
     } else { 
      // We found a non-quoted value. 
      var strMatchedValue = arrMatches[3]; 
     } 
     // Now that we have our value string, let's add 
     // it to the data array. 
     arrData[arrData.length - 1].push(strMatchedValue); 
    } 
    // Return the parsed data. 
    return (arrData); 
} 

function CSV2JSON(csv) { 
    var array = CSVToArray(csv); 
    var objArray = []; 
    for (var i = 1; i < array.length; i++) { 
     objArray[i - 1] = {}; 
     for (var k = 0; k < array[0].length && k < array[i].length; k++) { 
      var key = array[0][k]; 
      objArray[i - 1][key] = array[i][k] 
     } 
    } 

    var json = JSON.stringify(objArray); 
    var str = json.replace(/},/g, "},\r\n"); 

    return str; 
} 
のように市場で利用可能な製品を参照することができ

関連する問題