2012-06-29 10 views
17

Próbuję przekonwertować JavaScript Object zestaw do formatu csvprzekształcania obiektu json do formatu csv w javascript

można dostać się pomysł abt mojego obiektu JavaScript, jeśli umieścić je w Internecie JSON parsera http://json.parser.online.fr/

ten sposób starałem się go wrk ... bt to opadł .. http://jsfiddle.net/fHQzC/11/

próbuję wziąć cały wartości odpowiadającej wartości „wyrażenia” i odpowiedniego tytułu w formacie csv do

oczekiwany postawić na to jak

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 

tytułów nagrzewa narodowe Mistrzów

i to jest możliwe, aby pobrać plik CSV w arkuszu excel jeden znalazłem w stosie było nt naprawdę przydatne ...

+0

Chyba już sprawdziłeś http://stackoverflow.com/questions/4130849/convert-json-format-to-csv-format-for-ms-excel, a to nie działało dla ciebie? – Ando

+0

Tak, mam ... bt to nt .. – user1371896

Odpowiedz

18

ci można spróbować, jak

$(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)); 
    }); 

i funkcją 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

mój json jest nieco bardziej skomplikowany niż ten .. – user1371896

+1

złożoność nie ma to wpływu, ponieważ format CSV zawsze pozostanie taki sam .. –

+0

Już wypróbowałem ten jeden ... Znalazłem ten na stosie wcześniej .. – user1371896

1

to my roztwór

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

jest mój roztwór

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); 
} 

przykład:

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