Konvertieren Sie das JSON-Format in das CSV-Format für MS Excel [geschlossen]


75

Ich habe eine JSON-Datei erhalten, weiß aber nicht, wie ich sie lesen soll. Gibt es einen Konverter, mit dem ich eine schöne CSV-Datei erstellen kann, damit sie in MS Excel geladen werden kann? Ich verstehe JSON nicht, daher wäre es fantastisch, wenn jemand ein Skript schreiben oder mich mit einem verknüpfen würde, das die Arbeit erledigt.

Ich habe unter http://json.bloople.net etwas in der Nähe gefunden, aber leider ist es JSON zu HTML.

Bearbeiten: jsonformat.com kommt noch näher, aber es ist immer noch nicht CSV.


Es gibt einen Grund. CSV ist nicht hierachisch / strukturiert / gut geformt, JSON / HTML / XML. Willst du nur eine massive Saite bekommen? (kümmert sich nicht um die Bestellung)?
RPM1984

6
Ich brauche nur etwas, das in einem Tabellenformat gelesen werden kann. Ich dachte, CSV wäre der richtige Weg, da ich es einfach in Excel öffnen und mit der Bearbeitung der Daten beginnen kann.
Überlauf

1
Es ist erwähnenswert, dass nicht alle JSON-Dateien zuverlässig in CSV konvertiert werden können. Hier sind einige Beispiele für JSON, die dies nicht konnten: json.org/example.html Die Struktur des JSON, mit dem Sie arbeiten, scheint jedoch relativ einfach zu sein.
Amanda

json-csv.com konvertiert JSON zu CSV online
Stack Man

Antworten:


69

Ich bin nicht sicher, was Sie tun, aber dies wird mit JavaScript von JSON zu CSV gehen. Hierbei wird die Open-Source-JSON-Bibliothek verwendet . Laden Sie also einfach JSON.js in denselben Ordner herunter, in dem Sie den folgenden Code gespeichert haben, und analysieren Sie den statischen JSON-Wert json3in CSV und fordern Sie zum Herunterladen / Öffnen in Excel auf.

<!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
Sorry, nicht wirklich ein Programmierer hier ... wie 'benutze' ich das?
Lagerüberlauf

1
Entschuldigung ... bitte nehmen Sie mit ... in welches Programm füge ich diesen Code ein? Muss es sich im selben Verzeichnis wie die JSON-Dateien befinden?
Überlauf

1
Dies ist Javascript. Sie können es einfach in eine Webseite einfügen und damit JSON in CSV konvertieren. Wenn Sie möchten, dass es in einer Datei gespeichert wird, können Sie "return str" ersetzen. mit "window.open (" data: text / csv; charset = utf-8, "+ Escape (str);".
Zachary

Der obige Code scheint nicht den Fall zu behandeln, in dem der json-Wert "," enthält. zB "Sam, Smith". Vielleicht könnte jemand dies bestätigen.
Michael Z

1
Wahrscheinlich ist es sinnvoll, eine Javascript-CSV-Bibliothek wie agnes.codeplex.com oder code.google.com/p/jquery-csv zu verwenden, als ein eigenes CSV-Schreibskript zu erstellen .
festgemacht

63

Ich habe hier eine JsFiddle erstellt , basierend auf der Antwort von Zachary . Es bietet eine zugänglichere Benutzeroberfläche und vermeidet doppelte Anführungszeichen innerhalb von Zeichenfolgen.


1
Ich habe es gegabelt, um fehlende Schlüssel-Wert-Paare zu unterstützen. Jsfiddle.net/gonzif/MfJPF/1 Ihr erstes JSON-Objekt wird zum Definieren der Spaltenschlüssel verwendet.
Gon Zifroni

2
diese sind cool, unterstützen aber keine json-Arrays. es behandelt also nicht [{"Id": 1, "UserName": "Sam Smith", "Details": {"hair": "red", "eyes": "red"}}]
Dusty

1
Wenn ich auf "Download" klicke, wird der Download mit dem Dateinamen "Download" gestartet, sodass die Datei nicht erweitert wird. Würden Sie mir bitte mitteilen, wie ich die Datei umbenennen kann?
Juwel

Es hat bei mir nicht funktioniert
Luffydude

Wenn Sie in der Geige auf Download klicken, wird der Download nicht mit einer geeigneten Erweiterung (.csv) durchgeführt. Könnten Sie bitte helfen, welche Änderungen vorgenommen werden müssen?
Coderpc

1

Sie können dieses Gist verwenden, das ziemlich einfach zu verwenden ist und Ihre Einstellungen im lokalen Speicher speichert: https://gist.github.com/4533361


Ich verstehe nicht, was ich in die Felder "Kopfzeile", "Elemente extrahieren" oder "Element konvertieren" eingeben soll und was ich im Quellcode ändern soll.
Noumenon

1

Die Verwendung von Python ist eine einfache Möglichkeit, das zu erreichen, was Sie möchten.

Ich habe einen mit Google gefunden.

" Mit Python von json nach csv konvertieren " ist ein Beispiel.


1
Ich habe Python noch nie benutzt, ich weiß nur, dass es eine Programmiersprache ist, irgendwelche Alternativen?
Überlauf

Sie haben bereits erwähnt, dass Sie JSON in HTML konvertieren können. Excel kann HTML öffnen. Hast du das versucht?
Henrik

Der folgende EE-Artikel basiert auf Perl, kann Ihnen jedoch einige Anregungen geben, da eine JSON-Datei möglicherweise als Dojo-basiertes Grid angezeigt oder in XLS oder XLSX konvertiert wird. Es gibt auch eine Java-basierte Lösung json2excel, die auf sourceforge verfügbar ist.
arober11
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.