2012-06-29 41 views
17

Tôi cố gắng để chuyển đổi một đối tượng javascript đặt trong sang định dạng csvchuyển đổi đối tượng json sang định dạng csv trong javascript

Bạn có thể lấy ý tưởng abt đối tượng javascript của tôi, nếu bạn đặt nó trong phân tích cú pháp JSON trực tuyến http://json.parser.online.fr/

Đây là cách tôi đã cố gắng để wrk nó ra ... BT nó thất bại .. http://jsfiddle.net/fHQzC/11/

tôi cố gắng để mất toàn bộ giá trị tương ứng với giá trị "hạn" và danh hiệu tương ứng trong định dạng csv

các dự kiến ​​ra đưa cho là như

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 

Tiêu đề-Nóng Champions Quốc

và là nó có thể tải về các tập tin csv trong excel một trong những tôi tìm thấy trong ngăn xếp là nt thực sự hữu ích ...

+0

Tôi đoán bạn đã kiểm tra http://stackoverflow.com/questions/4130849/convert-json-format-to-csv-format-for-ms-excel và điều đó không hiệu quả với bạn? – Ando

+0

vâng tôi có ... bt nó đã làm nt .. – user1371896

Trả lời

18

bạn có thể thử như

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

và một hàm 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

json của tôi là một chút phức tạp hơn này .. – user1371896

+1

phức tạp không ảnh hưởng đến điều này như là định dạng của csv sẽ luôn luôn giữ nguyên .. –

+0

Tôi đã cố gắng này ... Tôi đã tìm thấy cái này trên ngăn xếp trước đó .. – user1371896

1

Đây là giải pháp của tôi

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

Đây là giải pháp của tôi

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

Ví dụ:

let arr = [{name: "Essa", age: 25}]; 
console.log(arrayToCSV(arr)); 
Các vấn đề liên quan