2012-06-29 15 views
17

Sto cercando di convertire un oggetto JavaScript impostato in formato CSVconversione oggetto JSON in formato CSV in javascript

È possibile ottenere l'idea circa il mio oggetto Javascript, se lo metti in parser JSON in linea http://json.parser.online.fr/

Ecco come ho cercato di WRK fuori ... bt è flop .. http://jsfiddle.net/fHQzC/11/

sto cercando di assumere i valori interi corrispondenti al valore "termine" e il titolo corrispondente al formato csv

il atteso mettere per è come

Time,Dec 9, 2012 
News,Germany,election, Egypt,Revolution, Japan, Earthquake 
Person,Obama, Beckham 
Title,Pearce Snubs Beckham         
Time,Dec 5, Birthday 
Person, Lebron James 
News,Italy,Euro 2012 Final 

Titolo, riscalda Campioni Nazionali

ed è possibile scaricare il file CSV in foglio Excel quella che ho trovato nello stack era nt davvero utile ...

+0

Immagino che tu abbia già controllato http://stackoverflow.com/questions/4130849/convert-json-format-to-csv-format-for-ms-excel e che non ha funzionato per te? – Ando

+0

sì ho ... bt lo ha fatto nt .. – user1371896

risposta

18

voi può provare come

$(document).ready(function() { 

     // Create Object 
     var items = [ 
       { name: "Item 1", color: "Green", size: "X-Large" }, 
       { name: "Item 2", color: "Green", size: "X-Large" }, 
       { name: "Item 3", color: "Green", size: "X-Large" }]; 

     // Convert Object to JSON 
     var jsonObject = JSON.stringify(items); 

     // Display JSON 
     $('#json').text(jsonObject); 

     // Convert JSON to CSV & Display CSV 
     $('#csv').text(ConvertToCSV(jsonObject)); 
    }); 

e una funzione ConvertToCSV

// JSON to CSV Converter 
     function ConvertToCSV(objArray) { 
      var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; 
      var str = ''; 

      for (var i = 0; i < array.length; i++) { 
       var line = ''; 
       for (var index in array[i]) { 
        if (line != '') line += ',' 

        line += array[i][index]; 
       } 

       str += line + '\r\n'; 
      } 

      return str; 
     } 

Source

+0

il mio json è un po 'più complesso di questo .. la complessità – user1371896

+1

non influenza questo come il formato del csv rimarrà sempre lo stesso .. –

+0

Ive già provato questo ... Ho trovato questo in pila in precedenza .. – user1371896

1

Questa è la mia soluzione

https://jsfiddle.net/dhou6y3o/

function iterateObject(obj) { 
    var value = '', header = ''; 
      for (name in obj) { 
      if (obj.hasOwnProperty(name)) { 
       if (isObject(obj[name])) { 
       var out = iterateObject(obj[name]); 
       value += out.value; 
       header += out.header; 
       } else { 
       value += removeNewLine(obj[name]) + '; '; 
       header += name + '; '; 
       } 
      } 
      } 
    return { 
    "value":value, 
    "header":header 
    }; 
} 
function isObject(obj) { 
    return (typeof obj === 'object'); 
} 
function removeNewLine(item) { 
    return item.toString().replace(/(\r\n|\n|\r)/gm,""); 
} 
1

Ecco la mia soluzione

function arrayToCSV(objArray) { 
    const array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray; 
    let str = `${Object.keys(array[0]).map(value => `"${value}"`).join(",")}` + '\r\n'; 

    return array.reduce((str, next) => { 
     str += `${Object.values(next).map(value => `"${value}"`).join(",")}` + '\r\n'; 
     return str; 
     }, str); 
} 

Esempio:

let arr = [{name: "Essa", age: 25}]; 
console.log(arrayToCSV(arr));