Как преобразовать JSON файл в Excel? - PullRequest
0 голосов
/ 02 августа 2020

У меня есть большой JSON файл размером около 3 ГБ, и я хочу преобразовать его в читаемый формат Excel. Как мне этого добиться?

Могу ли я сделать это через emeditor? Он поддерживает 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, и все данные должны быть скопированы под ними, чтобы я мог иметь чистый csv файл со всеми подробностями.

1 Ответ

0 голосов
/ 04 августа 2020

EmEditor не будет преобразовывать JSON в файлы Excel (или CSV) самостоятельно. Однако вы можете написать макрос для преобразования JSON в файлы CSV. Если вам нужна поддержка при написании макроса, можете ли вы написать небольшой образец JSON, и как вы хотите, чтобы выходной CSV выглядел?

Обновления

Это макрос для преобразования JSON в CSV. Это позволяет использовать только одну глубокую вложенную структуру JSON. Этот макрос проверяет, существует ли в данных разделитель (запятая), но НЕ проверяет, существуют ли двойные кавычки или код новой строки. Я также заметил, что ваши данные JSON содержат синтаксические ошибки, и исправил их.

Макрос JsonToCsv.jsee:

function AddStr( s1, s2 )
{
    if( s2.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, а затем выберите этот файл из Выбрать ... в меню Макросы . Наконец, откройте файл данных и выберите Выполнить в меню Макросы , пока ваш файл данных активен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...