Перетворити формат JSON на формат CSV для MS Excel [закрито]


75

Я отримав файл JSON, але не знаю, як його прочитати. Чи існує конвертер, де я можу створити гарний файл CSV, щоб його можна було завантажити в MS Excel? Я не розумію JSON, тому було б чудово, якби хтось написав сценарій або прив’язав мене до такого, який би виконував цю роботу.

Я знайшов щось близьке на http://json.bloople.net, але, на жаль, це JSON для HTML.

Редагувати: jsonformat.com стає ще ближчим, проте це все ще не CSV.


є причина. CSV не є ієрахічним / структурованим / добре сформованим, JSON / HTML / XML. ти просто хочеш отримати масивну струну? (не піклуючись про замовлення)?
— RPM1984,

6
Мені просто потрібно щось, що можна прочитати у форматі таблиці, я вважав, що використання CSV було правильним способом, оскільки я можу просто відкрити його в Excel і почати редагувати дані.
— stockoverflow

1
варто зазначити, що не всі JSON можна надійно перетворити на CSV. Ось кілька прикладів JSON, які не змогли: json.org/example.html Схоже, що структура JSON, з якою ви робите, порівняно проста.
— Аманда

json-csv.com перетворює JSON на CSV онлайн
— Stack Man

цим додатком можна скористатися microsoft.com/en-us/store/p/json-into-spreadsheet/9nvgjblt01mt
— Гра Pomodoro Technique

Відповіді:


69

Я не впевнений, що ви робите, але це перейде від JSON до CSV за допомогою JavaScript. Для цього використовується бібліотека JSON з відкритим кодом , тому просто завантажте JSON.js в ту саму папку, в яку ви зберегли код нижче, і він проаналізує статичне значення JSON у json3CSV та запропонує завантажити / відкрити в Excel.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>JSON to CSV</title>
    <script src="scripts/json.js" type="text/javascript"></script>
    <script type="text/javascript">
    var json3 = { "d": "[{\"Id\":1,\"UserName\":\"Sam Smith\"},{\"Id\":2,\"UserName\":\"Fred Frankly\"},{\"Id\":1,\"UserName\":\"Zachary Zupers\"}]" }

    DownloadJSON2CSV(json3.d);

    function DownloadJSON2CSV(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]) {
                line += array[i][index] + ',';
            }

            // Here is an example where you would wrap the values in double quotes
            // for (var index in array[i]) {
            //    line += '"' + array[i][index] + '",';
            // }

            line.slice(0,line.Length-1); 

            str += line + '\r\n';
        }
        window.open( "data:text/csv;charset=utf-8," + escape(str))
    }

    </script>

</head>
<body>
    <h1>This page does nothing....</h1>
</body>
</html>

1
Вибачте, тут насправді не програміст ... як я "використовую" це?
— stockoverflow

1
Вибачте ... будь ласка, потерпіть зі мною ... в яку програму я вставляю цей код? Чи повинен він знаходитися в тому ж каталозі, що і файли JSON?
— stockoverflow

1
Це javascript, ви можете просто вставити це на веб-сторінку та використати його для перетворення JSON у CSV ... Якщо ви хочете, щоб його зберегти у файл, ви можете замінити "return str;" з "window.open (" data: text / csv; charset = utf-8, "+ escape (str);".
— Захарі

Вищезазначений код, здається, не обробляє випадок, коли значення json містить ",". наприклад, "Сем, Сміт". Можливо, хтось міг це підтвердити.
— Michael Z

1
Можливо, має сенс використовувати бібліотеку CSV у форматі javascript, наприклад agnes.codeplex.com або code.google.com/p/jquery-csv, ніж прокручувати власний сценарій написання CSV.
— пришвартований 03.03.13

63

Я створив тут JsFiddle на основі відповіді, яку дав Захарі . Він надає більш доступний користувальницький інтерфейс, а також правильно уникає подвійних лапок у рядках.


1
Я роздвоїв його для підтримки відсутніх пар ключ-значення jsfiddle.net/gonzif/MfJPF/1 Ваш перший об'єкт JSON використовується для визначення ключів стовпців.
— Gon Zifroni

2
це круто, але жоден з них не підтримує масиви json. тому він не обробляє [{"Id": 1, "UserName": "Sam Smith", "Details": {"hair": "red", "eyes": "red"}}]
— Дасті

1
Крім того, коли я натискаю кнопку завантаження, тоді розпочинаю завантаження з назвою файлу "завантажити", тому файл не має розширення. Тож, будь ласка, дайте мені знати, як я можу перейменувати файл.
— Jewel

Це не спрацювало для мене
— Luffydude

При натисканні на кнопку завантаження у скрипті вона не завантажується з належним розширенням (.csv). Не могли б ви допомогти у зміні змін?
— coderpc

1

Ви можете використовувати цей суть, досить простий у використанні, зберігає ваші налаштування в локальному сховищі: https://gist.github.com/4533361


Я не розумію, що ви хочете, щоб я набрав у поля "заголовок", "витяг елементів" або "Перетворити елемент", а також те, що ви хочете, щоб я змінив у вихідному коді.
— Noumenon

1

Використання Python буде одним із простих способів досягти бажаного.

Я знайшов такий за допомогою Google.

" перетворення з json в csv за допомогою python " є прикладом.


1
Я ніколи раніше не використовував Python, я знаю лише, що це мова програмування, якісь альтернативи?
— stockoverflow

Ви вже згадували, що можете конвертувати JSON у HTML. Excel може відкривати HTML. Ви пробували це?
— Генрік

Наступна стаття EE заснована на Perl, але може дати вам кілька ідей, оскільки вона буде щасливо відображати файл JSON як сітку на основі Dojo або конвертувати його у XLS або XLSX. Існує також рішення на основі Java json2excel, доступне на sourceforge.
— arober11
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.