Javascript / 将 json 转换为 csv
Posted
技术标签:
【中文标题】Javascript / 将 json 转换为 csv【英文标题】:Javascript / convert json to csv 【发布时间】:2013-03-01 03:57:37 【问题描述】:如何将 json 对象数组转换为 csv?
前
[ name: "Item 1", color: "Green", size: "X-Large" ,
name: "Item 2", color: "Green", size: "X-Large" ,
name: "Item 3", color: "Green", size: "X-Large" ];
给
name;color;size
Item 1;Green;X-Large
Item 2;Green;X-Large
Item 3;Green;X-Large
【问题讨论】:
How to convert JSON to CSV format and store in a variable的可能重复 在我的函数中,我添加了标题和支持日期格式 【参考方案1】:尽管这是一个相当老的问题,但将我的发现保存在这里以供未来的研究人员使用。
javascript 现在提供 Object.values 的功能,可以将 json 的所有值拉到一个数组中,然后可以使用 join 将其转换为 csv。
var csvrecord = Object.keys(jsonarray[0]).join(',') + '\n';
jsonarray.forEach(function(jsonrecord)
csvrecord += Object.values(jsonrecord).join(',') + '\n';
);
唯一的限制是一些浏览器仍然不支持它。
【讨论】:
这仅在您的对象“简单”时才有效。如果你的 jsonrecord 包含一个 datetime 对象或者一个 bizarre 对象,object.values 会写什么。【参考方案2】:function getCSVFromJson(k)
var retVal=[];
k.forEach(function(a)
var s='';
for(k in a)
s+=a[k]+';';
retVal.push(s.substring(0,s.length-1));
);
return retVal;
【讨论】:
最好解释一下为什么你的代码可以解决问题。请参阅How to Answer。【参考方案3】:JSFiddle 中的示例:http://jsfiddle.net/FLR4v/
依赖:
下划线http://underscorejs.org/underscore-min.js Momentjs http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.0.0/moment.min.js功能
/**
* Return a CSV string from an array of json object
*
* @method JSONtoCSV
* @param Object jsonArray an array of json object
* @param String [delimiter=;] delimiter
* @param String [dateFormat=ISO] dateFormat if a date is detected
* @return String Returns the CSV string
**/
function JSONtoCSV(jsonArray, delimiter, dateFormat)
dateFormat = dateFormat || 'YYYY-MM-DDTHH:mm:ss Z'; // ISO
delimiter = delimiter || ';' ;
var body = '';
// En tete
var keys = _.map(jsonArray[0], function(num, key) return key; );
body += keys.join(delimiter) + '\r\n';
// Data
for(var i=0; i<jsonArray.length; i++)
var item = jsonArray[i];
for(var j=0; j<keys.length; j++)
var obj = item[keys[j]] ;
if (_.isDate(obj))
body += moment(obj).format(dateFormat) ;
else
body += obj ;
if (j < keys.length-1)
body += delimiter;
body += '\r\n';
return body;
【讨论】:
以上是关于Javascript / 将 json 转换为 csv的主要内容,如果未能解决你的问题,请参考以下文章
JSON.stringify 将 Infinity 转换为 null