[英]Converting Json to CSV in Javascript
Rows
下,因此它以单字符行形式显示 JSON。更新
base 64 string
样本base-64
let jsonContent = atob(base_64_string);
这可以帮助你。 标题是目前来自 json 输入的标题,但如果您需要 csv output 示例中的标题,您可以轻松交换它们。
//Added after discussion: It shows you how to prepare your base-64 string
//transform base 64 string in a decoded string
let decoded_string = atob(base_64_string);
let jsonString = JSON.parse(decoded_string);
//Example data - uncomment if you instead immediately paste the json object
//let jsonString = <redacted>;//redacted for brevity, but just paste your json file here if you want an example
//Select our data from the raw object
var data = JSON.parse(jsonString.Rows);
//Desired headers in the .csv. Other fields are ignored
let headers = ["Transaction_Date","Particulars","Amount",'Cr_Dr', "Balance", "Transaction_Type","Normalized_Party_Name_Label", "Normalized_Charge_Name_Label", "Charge_Class"]
//Choose your seperator
const seperator = ",";
//Prepare csv with a header row and our data
const csv = [headers.join(seperator),
...data.map(row => headers.map(field => `${row[field]}`).join(seperator))
]
//Export our csv in rows to a csv file
let csvContent = "data:text/csv;charset=utf-8,"
+ csv.join("\n");
var encodedUri = encodeURI(csvContent);
window.open(encodedUri);
工作播放代码示例:
我们创建了可重用的 convertJsonToCsv() function 以允许我们将 JSON 的多个字符串转换为 CSV 转换。 它将接受一个包含对象的数组。 每个 object 在 CSV output 中都有自己的行。
我们在此 function 中采取的第一个操作是获取将用于 CSV header 的所有密钥。 我们假设数组中的所有对象都具有相同的键,因此我们使用 Object.keys() 方法从第一个 object 项中提取键到一个数组中。
const obj = [
{ color: 'gray', maxSpeed: 230, age: 10 },
{ color: 'blue', maxSpeed: 210, age: 8 },
{ color: 'green', maxSpeed: 220, age: 7 },
];
// { color: 'gray', maxSpeed: 230, age: 10 }
console.log(obj[0]);
// [ 'color', 'maxSpeed', 'age' ]
console.log(Object.keys(obj[0]));
获取keys后,我们调用数组的join()方法,将所有元素拼接成一个CSV header字符串。
const hdr = ['color', 'maxSpeed', 'age'];
const hdrString = array.join(",");
console.log(hdrString); // color,maxSpeed,age
下一步是创建一个回调 function,它将作为参数传递给 JSON.stringify() function 的替换参数。 此 function 将处理 JSON 数组中对象的未定义或 null 属性值。
const object = {prop1: 'World', prop2: undefined};
// In place of undefined property values, use the string('') empty.
const replacer = (key, val) => val ?? '';
const strVal = JSON.stringify(object, replacer);
// {"prop1":"World","prop2":""}
console.log(strVal);
这可能会帮助你
<html> <head> <title>Demo - Covnert JSON to CSV</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script> <script type="text/javascript"> // 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: } // Example $(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)); }); </script> </head> <body> <h1> JSON</h1> <pre id="json"></pre> <h1> CSV</h1> <pre id="csv"></pre> </body> </html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.