2012-06-29 19 views
17

Estoy tratando de convertir un objeto Javascript establecido en formato csvconvertir objeto JSON en formato csv en javascript

Usted puede obtener la idea ABT mi objeto Javascript, si lo pones en el analizador JSON en línea http://json.parser.online.fr/

Así es como he tratado de wrk hacia fuera ... bt se dejó caer .. http://jsfiddle.net/fHQzC/11/

estoy tratando de tomar los valores enteros correspondientes al valor de "expresión" y el título correspondiente en formato csv a

el esperado salir poner a es como

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 

títulos, Calienta campeones nacionales

y es posible descargar el archivo csv en la hoja de Excel la que me encontré en la pila era realmente útil nt ...

+0

Supongo que ya ha comprobado http://stackoverflow.com/questions/4130849/convert-json-format-to-csv-format-for-ms-excel y que no funcionó para usted? – Ando

+0

sí, tengo ... bt sí nt .. – user1371896

Respuesta

18

se puede tratar como

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

y una función 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

mi json es un poco más complejo que este .. – user1371896

+1

complejidad no afecta esto, ya que el formato del csv siempre será el mismo .. –

+0

Ya lo he intentado ... Encontré este en la pila anterior ... – user1371896

1

Esta es mi solución

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

Aquí está mi solución

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

Ejemplo:

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