Ich habe einen Link, der JSON-Daten im Browser öffnet, aber leider habe ich keine Ahnung, wie ich sie lesen soll. Gibt es eine Möglichkeit, diese Daten mit JavaScript im CSV-Format zu konvertieren und in einer JavaScript-Datei zu speichern?
Die Daten sehen aus wie:
{
"count": 2,
"items": [{
"title": "Apple iPhone 4S Sale Cancelled in Beijing Amid Chaos (Design You Trust)",
"description": "Advertise here with BSA Apple cancelled its scheduled sale of iPhone 4S in one of its stores in China\u2019s capital Beijing on January 13. Crowds outside the store in the Sanlitun district were waiting on queues overnight. There were incidents of scuffle between shoppers and the store\u2019s security staff when shoppers, hundreds of them, were told that the sales [...]Source : Design You TrustExplore : iPhone, iPhone 4, Phone",
"link": "http:\/\/wik.io\/info\/US\/309201303",
"timestamp": 1326439500,
"image": null,
"embed": null,
"language": null,
"user": null,
"user_image": null,
"user_link": null,
"user_id": null,
"geo": null,
"source": "wikio",
"favicon": "http:\/\/wikio.com\/favicon.ico",
"type": "blogs",
"domain": "wik.io",
"id": "2388575404943858468"
}, {
"title": "Apple to halt sales of iPhone 4S in China (Fame Dubai Blog)",
"description": "SHANGHAI \u2013 Apple Inc said on Friday it will stop selling its latest iPhone in its retail stores in Beijing and Shanghai to ensure the safety of its customers and employees. Go to SourceSource : Fame Dubai BlogExplore : iPhone, iPhone 4, Phone",
"link": "http:\/\/wik.io\/info\/US\/309198933",
"timestamp": 1326439320,
"image": null,
"embed": null,
"language": null,
"user": null,
"user_image": null,
"user_link": null,
"user_id": null,
"geo": null,
"source": "wikio",
"favicon": "http:\/\/wikio.com\/favicon.ico",
"type": "blogs",
"domain": "wik.io",
"id": "16209851193593872066"
}]
}
Das nächste, das ich finden konnte, war: Konvertieren Sie das JSON-Format in das CSV-Format für MS Excel
Aber es wird in einer CSV-Datei heruntergeladen, ich speichere es in einer Variablen, die gesamten konvertierten Daten.
Möchte auch wissen, wie man Escape-Zeichen ändert: '\u2019'
wieder normal.
Ich habe diesen Code ausprobiert:
<!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="http://code.jquery.com/jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
var json3 = {
"count": 2,
"items": [{
"title": "Apple iPhone 4S Sale Cancelled in Beijing Amid Chaos (Design You Trust)",
"description": "Advertise here with BSA Apple cancelled its scheduled sale of iPhone 4S in one of its stores in China’s capital Beijing on January 13. Crowds outside the store in the Sanlitun district were waiting on queues overnight. There were incidents of scuffle between shoppers and the store’s security staff when shoppers, hundreds of them, were told that the sales [...]Source : Design You TrustExplore : iPhone, iPhone 4, Phone",
"link": "http://wik.io/info/US/309201303",
"timestamp": 1326439500,
"image": null,
"embed": null,
"language": null,
"user": null,
"user_image": null,
"user_link": null,
"user_id": null,
"geo": null,
"source": "wikio",
"favicon": "http://wikio.com/favicon.ico",
"type": "blogs",
"domain": "wik.io",
"id": "2388575404943858468"
},
{
"title": "Apple to halt sales of iPhone 4S in China (Fame Dubai Blog)",
"description": "SHANGHAI – Apple Inc said on Friday it will stop selling its latest iPhone in its retail stores in Beijing and Shanghai to ensure the safety of its customers and employees. Go to SourceSource : Fame Dubai BlogExplore : iPhone, iPhone 4, Phone",
"link": "http://wik.io/info/US/309198933",
"timestamp": 1326439320,
"image": null,
"embed": null,
"language": null,
"user": null,
"user_image": null,
"user_link": null,
"user_id": null,
"geo": null,
"source": "wikio",
"favicon": "http://wikio.com/favicon.ico",
"type": "blogs",
"domain": "wik.io",
"id": "16209851193593872066"
}
]
}
//var objJson = JSON.parse(json3.items);
DownloadJSON2CSV(json3.items);
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] + ',';
}
line.slice(0, line.Length - 1);
str += line + '\r\n';
}
$('div').html(str);
}
</script>
</head>
<body>
<div></div>
</body>
</html>
Aber es scheint nicht zu funktionieren. Kann mir bitte jemand helfen?
javascript
json
csv
praneybehl
quelle
quelle
2,Apple iPhone 4S Sale Cancelled in Beijing Amid Chaos (Design You Trust), ...
?Antworten:
Eine elegantere Möglichkeit, json in csv zu konvertieren, besteht darin, die Kartenfunktion ohne Framework zu verwenden:
Ausgabe:
Update ES6 (2016)
Verwenden Sie diese weniger dichte Syntax und auch JSON.stringify, um Zeichenfolgen in Anführungszeichen zu setzen, während Zahlen ohne Anführungszeichen bleiben:
quelle
null
- jetzt sollten die Beispiele sowohl null als auch undefiniert und Zahlen korrekt behandeln.\"
denen einige Felder aus ihrer Spalte "herausspringen" können, wenn sie in Excel angezeigt werden (was""
als Escape-Zeichen für Anführungszeichen zu bevorzugen scheint ). Dies kann gelöst werden, indem.replace(/\\"/g, '""')
am Ende von hinzugefügt wird ,JSON.stringify(row[fieldName], replacer)
wie ich in meiner obigen Antwort angegeben habe.Ok, ich habe endlich diesen Code zum Laufen gebracht:
Vielen Dank für die Unterstützung aller Mitwirkenden.
Praney
quelle
Sehr schöne Lösung von praneybehl, aber wenn jemand die Daten als
csv
Datei speichern und eineblob
Methode verwenden möchte, kann er dies verweisen:quelle
var row
zweimal (wenn Anweisungen und for-Schleifen keine Abschlüsse erstellen). Auch die Label / Header-Schleife könnte wahrscheinlich auf eine Zeile reduziert werden:Object.keys(arrData[0]).join(',')
document.getElementById("lnkDwnldLnk").download = filename;
document.getElementById("lnkDwnldLnk").href = csvUrl;
Laufen bringen, musste aber einen Teil des Codes bearbeiten, um: 1. ohne JQuery zu arbeiten: 2. in IE11 zu arbeiten:if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
document.getElementById('lnkDwnldLnk').click();
}
Ich wollte hier nur Code für zukünftige Benutzer hinzufügen, da ich versucht habe, JSON in ein CSV-Dokument zu exportieren und herunterzuladen.
Ich verwende
$.getJSON
, um JSON-Daten von einer externen Seite abzurufen, aber wenn Sie ein einfaches Array haben, können Sie das einfach verwenden.Dies verwendet den Code von Christian Landgren, um die CSV-Daten zu erstellen.
Bearbeiten: Es ist erwähnenswert, dass
JSON.stringify
Anführungszeichen in Anführungszeichen durch Hinzufügen vermieden werden\"
. Wenn Sie die CSV in Excel anzeigen, mag sie das nicht als Escape-Zeichen.Sie können hinzufügen ,
.replace(/\\"/g, '""')
bis zum Ende desJSON.stringify(row[fieldName], replacer)
in Excel diese korrekt angezeigt werden (diese ersetzen wird\"
mit""
dem ist , was Excel vorzieht).Volle Linie:
let csv = items.map(row => header.map(fieldName => (JSON.stringify(row[fieldName], replacer).replace(/\\"/g, '""'))).join(','));
quelle
Wenn jemand es auch herunterladen wollte.
Hier ist eine tolle kleine Funktion, die ein Array von JSON-Objekten in CSV konvertiert und dann herunterlädt.
Dann nenne es so:
quelle
Cap D'antibes
Es stehen mehrere Optionen zur Verfügung, um die vorhandenen leistungsstarken Bibliotheken, die auf Standards basieren, wiederzuverwenden.
Wenn Sie D3 in Ihrem Projekt verwenden, können Sie einfach Folgendes aufrufen:
d3.csv.format
oderd3.csv.formatRows
Funktionen zum Konvertieren eines Arrays von Objekten in eine CSV-Zeichenfolge.d3.csv.formatRows
gibt Ihnen eine bessere Kontrolle darüber, welche Eigenschaften in CSV konvertiert werden.Weitere Informationen finden Sie auf den Wiki-Seiten d3.csv.format und d3.csv.formatRows .
Es gibt auch andere Bibliotheken wie jquery-csv , PapaParse . Papa Parse hat keine Abhängigkeiten - nicht einmal jQuery.
Für jquery-basierte Plugins überprüfen Sie dies bitte .
quelle
Probieren Sie diese Beispiele aus
Beispiel 1:
Beispiel 2:
Sie können die CSV-Datei sogar mit dem folgenden Code herunterladen:
quelle
quelle
Hier ist eine Möglichkeit, dies für dynamisch tiefe Objekte objektorientiert für die neueren js-Versionen zu tun. Möglicherweise müssen Sie den Separatortyp nach Region ändern.
quelle
Manchmal haben Objekte unterschiedliche Längen. Also stieß ich auf das gleiche Problem wie Kyle Pennell. Aber anstatt das Array zu sortieren, fahren wir einfach darüber und wählen das längste aus. Die zeitliche Komplexität wird beim ersten Sortieren auf O (n) im Vergleich zu O (n log (n)) reduziert.
Ich habe mit dem Code aus Christian Landgrens aktualisierter ES6 (2016) -Version begonnen.
quelle
Ich wollte die Antwort von @Christian Landgren oben riffeln. Ich war verwirrt, warum meine CSV-Datei nur 3 Spalten / Header hatte. Dies lag daran, dass das erste Element in meinem JSON nur 3 Schlüssel hatte. Sie müssen also vorsichtig mit der
const header = Object.keys(json[0])
Leitung sein. Es wird davon ausgegangen, dass das erste Element im Array repräsentativ ist. Ich hatte chaotisch JSON, dass mit einigen Objekten mehr oder weniger.Also habe ich eine hinzugefügt
array.sort
, die den JSON nach Anzahl der Schlüssel ordnet. Auf diese Weise hat Ihre CSV-Datei die maximale Anzahl von Spalten.Dies ist auch eine Funktion, die Sie in Ihrem Code verwenden können. Füttere es einfach JSON!
quelle
Eine Anpassung von praneybehl Antwort an die Arbeit mit verschachtelten Objekten und Tabulatortrennzeichen
quelle
Schreiben Sie Csv.
quelle
Komisch, dass hier nichts vollständig ist oder funktioniert (IE oder node.js). Antwort auf eine ähnliche Frage, ein bisschen strukturiertes JSON (vermutlich muss es nicht erneut kopiert werden), auch Demo-Snippet enthalten. JSON-zu-CSV-Konvertierung (JavaScript): So formatieren Sie die CSV-Konvertierung richtig Hoffen Sie, dass nicht nur ein Konverter vom Einzeltyp, sondern auch mein Github (im Profil erwähnt) zur Analyse unbekannter JSON-Strukturen verwendet wird. Ich bin Autor des Codes in dieser Antwort und des gesamten Codes auf meinem Github (mit Ausnahme einiger Projekte, die als Fork / + -Übersetzung gestartet wurden).
quelle
Persönlich würde ich dazu die d3-dsv- Bibliothek verwenden. Warum
reinvent the wheel
?Mit Tree-Shaking können Sie diese bestimmte Funktion einfach aus der
d3-dsv
Bibliothek importierenquelle
Hier ist meine einfache Version des Konvertierens eines Arrays von Objekten in CSV (vorausgesetzt, diese Objekte haben alle dieselben Attribute):
quelle