我是编程新手,正在开发一个使用 node.js 从 API 接收嵌套 JSON 响应的项目。我希望找到一种简单的方法将此 JSON 转换为 CSV 以便导出。我搜索了一下,尝试了 jsonexport 和nestedcsv2json 包,但我无法使我的格式完全正确,并且无法迭代我的 JSON 响应。
JSON 响应基本上如下:
{ '2016-01-31': { chats: 0, missed_chats: 5 },
'2016-02-01': { chats: 60, missed_chats: 7 },
'2016-02-02': { chats: 56, missed_chats: 1 },
'2016-02-03': { chats: 46, missed_chats: 0 },
'2016-02-04': { chats: 63, missed_chats: 2 },
'2016-02-05': { chats: 59, missed_chats: 4 },
'2016-02-06': { chats: 0, missed_chats: 1 } }
我遇到的问题是,它的大小可能会根据用户输入的日期范围而变化。因此,我需要迭代返回的日期,然后提取嵌套的 JSON。可以是 1 个日期,也可以是 100 个日期。
我希望制作一个带有可以导出的标题的 CSV 格式:
Date Chats Missed Chats
2016-02-02 60 7
这应该是快速和简单的,但我正在努力做到这一点。非常感谢任何提示或帮助。谢谢!
最佳答案
这会输出一个以分号分隔的 csv 字符串。编辑分隔符(例如将其替换为制表符 \t
)以满足您的需求:
var json = { '2016-01-31': { chats: 0, missed_chats: 5 },
'2016-02-01': { chats: 60, missed_chats: 7 },
'2016-02-02': { chats: 56, missed_chats: 1 },
'2016-02-03': { chats: 46, missed_chats: 0 },
'2016-02-04': { chats: 63, missed_chats: 2 },
'2016-02-05': { chats: 59, missed_chats: 4 },
'2016-02-06': { chats: 0, missed_chats: 1 } };
var headers = 'Date;Chats;Missed chats';
var csv = headers + '\r\n';
for(key in json){
csv += key + ';' + json[key].chats + ';' + json[key].missed_chats + '\r\n'
}
console.log(csv)
输出为:
Date;Chats;Missed chats
2016-01-31;0;5
2016-02-01;60;7
2016-02-02;56;1
2016-02-03;46;0
2016-02-04;63;2
2016-02-05;59;4
2016-02-06;0;1
您可以在这里找到一个工作示例:https://jsfiddle.net/owd8zsa0/
关于javascript - 嵌套 JSON 到 CSV 格式 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245113/