Перетворити формат 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.