如何将 JSON 文件转换为 excel?
How to convert JSON file to excel?
我有一个大约 3gb 的大 JSON 文件,我想将其转换为可读的 excel 格式。我怎样才能做到这一点?
我可以通过编辑器来完成吗?它支持 JSON 但不确定我是否可以将其转换为 excel.
欢迎任何意见。
谢谢
例如:
{
"name": "George Washington",
"birthday": "February 22, 1732",
"address": "Mount Vernon, Virginia, United States"
}
{
"first_name": "George",
"last_name": "Washington",
"birthday": "1732-02-22",
"address": {
"street_address": "3200 Mount Vernon Memorial Highway",
"city": "Mount Vernon",
"state": "Virginia",
"country": "United States"
}
}
所以在这里我希望名字、姓氏、生日、地址都为 csv headers 并且所有数据都应该复制到它下面,这样我就可以获得一个包含所有详细信息的干净的 csv 文件。
EmEditor 不会自行将 JSON 文件转换为 Excel(或 CSV)文件。但是,您可以编写宏将 JSON 转换为 CSV 文件。如果您需要编写宏的支持,可以编写一个小的 JSON 示例吗?您希望输出的 CSV 格式如何?
更新
这是一个用于将 JSON 转换为 CSV 的宏。它最多只允许 one-deep 个 JSON 的嵌套结构。此宏检查数据中是否存在定界符(逗号),但不检查是否存在双引号或换行代码。我还注意到您的 JSON 数据包含语法错误,我已更正它。
宏 JsonToCsv.jsee
:
function AddStr( s1, s2 )
{
if( s2.toString().indexOf( ',' ) != -1 ) {
s2 = '"' + s2 + '"';
}
return s1 + s2;
}
sHeading = "";
sBody = "";
document.selection.SelectAll();
var json = JSON.parse(document.selection.Text);
for( property in json ) {
if( typeof json[property] === 'object' ) {
for( property2 in json[property] ) {
if( sHeading.length != 0 ){
sHeading += ",";
sBody += ",";
}
sHeading = AddStr( sHeading, property2 );
sBody = AddStr( sBody, json[property][property2] );
}
}
else {
if( sHeading.length != 0 ){
sHeading += ",";
sBody += ",";
}
sHeading = AddStr( sHeading, property );
sBody = AddStr( sBody, json[property] );
}
}
editor.NewFile();
document.selection.Text = sHeading + "\r\n" + sBody + "\r\n";
editor.ExecuteCommandByID(22528); // switch to CSV mode
输入:
{
"name": "George Washington",
"birthday": "February 22, 1732",
"first_name": "George",
"last_name": "Washington",
"birthday": "1732-02-22",
"address": {
"street_address": "3200, Mount Vernon Memorial Highway",
"city": "Mount Vernon",
"state": "Virginia",
"country": "United States"
}
}
输出:
name,birthday,first_name,last_name,street_address,city,state,country
George Washington,1732-02-22,George,Washington,"3200, Mount Vernon Memorial Highway",Mount Vernon,Virginia,United States
打开数据文件后,您可以运行这个宏。为此,请将此代码另存为 JsonToCsv.jsee
,然后 select 来自 Select... 的此文件 宏 菜单。最后,打开您的数据文件,并在您的数据文件处于活动状态时,在 Macros 菜单中 select 运行。
我有一个大约 3gb 的大 JSON 文件,我想将其转换为可读的 excel 格式。我怎样才能做到这一点?
我可以通过编辑器来完成吗?它支持 JSON 但不确定我是否可以将其转换为 excel.
欢迎任何意见。 谢谢
例如:
{
"name": "George Washington",
"birthday": "February 22, 1732",
"address": "Mount Vernon, Virginia, United States"
}
{
"first_name": "George",
"last_name": "Washington",
"birthday": "1732-02-22",
"address": {
"street_address": "3200 Mount Vernon Memorial Highway",
"city": "Mount Vernon",
"state": "Virginia",
"country": "United States"
}
}
所以在这里我希望名字、姓氏、生日、地址都为 csv headers 并且所有数据都应该复制到它下面,这样我就可以获得一个包含所有详细信息的干净的 csv 文件。
EmEditor 不会自行将 JSON 文件转换为 Excel(或 CSV)文件。但是,您可以编写宏将 JSON 转换为 CSV 文件。如果您需要编写宏的支持,可以编写一个小的 JSON 示例吗?您希望输出的 CSV 格式如何?
更新
这是一个用于将 JSON 转换为 CSV 的宏。它最多只允许 one-deep 个 JSON 的嵌套结构。此宏检查数据中是否存在定界符(逗号),但不检查是否存在双引号或换行代码。我还注意到您的 JSON 数据包含语法错误,我已更正它。
宏 JsonToCsv.jsee
:
function AddStr( s1, s2 )
{
if( s2.toString().indexOf( ',' ) != -1 ) {
s2 = '"' + s2 + '"';
}
return s1 + s2;
}
sHeading = "";
sBody = "";
document.selection.SelectAll();
var json = JSON.parse(document.selection.Text);
for( property in json ) {
if( typeof json[property] === 'object' ) {
for( property2 in json[property] ) {
if( sHeading.length != 0 ){
sHeading += ",";
sBody += ",";
}
sHeading = AddStr( sHeading, property2 );
sBody = AddStr( sBody, json[property][property2] );
}
}
else {
if( sHeading.length != 0 ){
sHeading += ",";
sBody += ",";
}
sHeading = AddStr( sHeading, property );
sBody = AddStr( sBody, json[property] );
}
}
editor.NewFile();
document.selection.Text = sHeading + "\r\n" + sBody + "\r\n";
editor.ExecuteCommandByID(22528); // switch to CSV mode
输入:
{
"name": "George Washington",
"birthday": "February 22, 1732",
"first_name": "George",
"last_name": "Washington",
"birthday": "1732-02-22",
"address": {
"street_address": "3200, Mount Vernon Memorial Highway",
"city": "Mount Vernon",
"state": "Virginia",
"country": "United States"
}
}
输出:
name,birthday,first_name,last_name,street_address,city,state,country
George Washington,1732-02-22,George,Washington,"3200, Mount Vernon Memorial Highway",Mount Vernon,Virginia,United States
打开数据文件后,您可以运行这个宏。为此,请将此代码另存为 JsonToCsv.jsee
,然后 select 来自 Select... 的此文件 宏 菜单。最后,打开您的数据文件,并在您的数据文件处于活动状态时,在 Macros 菜单中 select 运行。