Comment faire pour convertir en JSON au format CSV et de les stocker dans une variable
J'ai un lien qui s'ouvre json les données dans le navigateur, mais malheureusement, je n'ai aucune idée de comment faire pour le lire. Est-il un moyen de convertir ces données en utilisant javascript Séparées par des Virgules (csv) format et l'enregistrer dans un javascript variable. J'ai juste commencé à apprendre et n'ont absolument aucune idée de json, il serait génial si quelqu'un pouvait écrire un script pour ça.
Les données semblent comme :
{
"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"
}]
}
Le plus proche que j'ai pu trouver était : Convertir format JSON au format CSV pour microsoft Excel
Mais les téléchargements dans un CSV
fichier, je le stocker dans une variable, l'ensemble des données converties.
Voudrais aussi savoir comment faire pour modifier les caractères d'échappement: '\u2019'
de retour à la normale.
Merci d'avance.
J'ai essayé ce code:
<!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>
Mais il ne semble pas fonctionner. Quelqu'un peut s'il vous plaît aider?
- Ce sujet zachhunter.com/2011/06/json-to-csv ?
- vous avez un bon code. la ligne qui télécharge est de la fenêtre.open( "données:texte/csv;charset=utf-8" + escape(str)).. il suffit de l'ignorer, si vous n'en avez pas besoin. et le csv chaîne est conservée dans cette variable: str
- CSV cant gérer plusieurs niveaux de données (ainsi) que JSON. Comment voulez-vous attendre de votre JSON pour ressembler au format CSV?
2,Apple iPhone 4S Sale Cancelled in Beijing Amid Chaos (Design You Trust), ...
? - Je voudrais que mes données à ressembler à: Apple iPhone 4S Vente Annulée à Pékin dans le Chaos (Conception en qui Vous avez Confiance),faire de la Publicité ici avec de la BSA Apple a annulé ses vols de ligne, la vente de l'iPhone 4S dans un de ses magasins..,,,,,, etc, je peux facilement supprimer ce départ caractères: "{"count":2,"items":[:"
- oui, mais pour une raison que je ne suis pas en mesure de l'obtenir pour fonctionner.
- merci pour le lien et l'aider à s'accoupler. Ne savez pas où votre commentaire est allé. Dans votre lien jsfiddle.net/5TKBx il n'y a pas de script de références, mais je crois que je vais avoir à ajouter ceux qui ne serait pas I. Désolé de paraître comme un idiot.
- J'ai supprimé eux, j'ai réalisé que je n'avais pas vérifié votre objet json. Raté mon œil.
Vous devez vous connecter pour publier un commentaire.
Une façon plus élégante de convertir au format csv, json est d'utiliser la fonction map sans cadre:
De sortie:
Mise à jour ES6 (2016)
L'utilisation de ce moins dense de la syntaxe et aussi JSON.stringify pour ajouter des guillemets à cordes, tout en conservant les numéros non cotées:
return JSON.stringify(row[fieldName] || '');
permettra d'imprimer des zéros comme ""null
- maintenant, les exemples doivent gérer à la fois la valeur null, indéfinis et les chiffres correctement.const replacer = (key, value) => value === null ? '' : value
n'ont aucun moyen de à paramètre des données JSON a la vaue seulement que pourquoi nous faisons cela?\"
qui permet à certains champs de "sortir" de leur colonne dans Excel (qui semble préférer""
comme un caractère d'échappement pour les citations). Ce problème peut être résolu par l'ajout d'.replace(/\\"/g, '""')
à la fin deJSON.stringify(row[fieldName], replacer)
comme je l'ai indiqué dans ma réponse ci-dessus.Ok, j'ai enfin eu le présent code de travail:
Merci beaucoup pour tout le soutien à tous les contributeurs.
Praney
Très belle solution par praneybehl, mais si quelqu'un veut sauvegarder les données comme
csv
fichier et à l'aide d'unblob
méthode, puis ils peuvent se référer à ceci:var row
deux fois (si les états et pour les boucles ne pas créer des fermetures). Aussi l'étiquette d'en-tête de la boucle pourrait probablement être réduit à une seule ligne:Object.keys(arrData[0]).join(',')
document.getElementById("lnkDwnldLnk").download = filename;
document.getElementById("lnkDwnldLnk").href = csvUrl;
2. travailler dans IE11:if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
document.getElementById('lnkDwnldLnk').click();
}
Je voulais juste ajouter un peu de code ici pour les gens dans le futur, car j'ai essayé d'exporter JSON, CSV document et le télécharger.
- Je utiliser
$.getJSON
à tirer des données json à partir d'une page externe, mais si vous avez une base de tableau, vous pouvez l'utiliser.Il utilise Chrétienne Langrain du code pour créer les données au format csv.
Edit: Il est intéressant de noter que
JSON.stringify
échappent des citations entre guillemets par l'ajout de\"
. Si vous affichez le fichier CSV dans excel, il n'aime pas cela comme un caractère d'échappement.Vous pouvez ajouter
.replace(/\\"/g, '""')
à la fin deJSON.stringify(row[fieldName], replacer)
pour afficher correctement dans excel (ce sera de remplacer les\"
avec""
qui est ce qu'excel préfère).Gamme Complète:
let csv = items.map(row => header.map(fieldName => (JSON.stringify(row[fieldName], replacer).replace(/\\"/g, '""'))).join(','));
Il y a plusieurs options disponibles pour la réutilisation de l'existant puissantes bibliothèques qui sont basées sur des standards.
Si vous arrive d'utiliser D3 dans votre projet, vous pouvez simplement appeler:
d3.csv.format
oud3.csv.formatRows
des fonctions permettant de convertir un tableau d'objets en csv chaîne.d3.csv.formatRows
vous donne plus de contrôle sur les propriétés qui sont convertis au format csv.Veuillez vous référer à d3.csv.format et d3.csv.formatRows pages wiki.
Il y a d'autres bibliothèques, comme la jquery-csv, PapaParse. Papa Analyser n'a pas de dépendances - même pas jQuery.
Pour jquery en fonction des plugins, veuillez cochez cette.
Si quelqu'un voulait le télécharger ainsi.
Voici un très bon peu de fonction qui convertit un tableau d'objets JSON au format csv, puis le télécharger.
Puis l'appeler comme ceci:
Heres un moyen de le faire de manière dynamique profonde des objets dans un objet orienté de façon pour le plus récent js versions. vous pourriez avoir à changer le seperatortype après région.
Essayez ces Exemples:
Exemple 1:
Exemple2 :
Vous pouvez même télécharger le fichier csv à l'aide du code suivant :
Drôle rien de complet ni de travail ici (c'est à dire ni node.js). Réponse à la même question, un peu structuré JSON (supposons pas besoin de le copier à nouveau), également extrait de la démo inclus.
JSON, CSV conversion (JavaScript) : Comment bien le format CSV conversion
N'espère pas un seul type de convertisseur, aussi sur mon Github (mentionné dans le profil) est similaire utilisé pour analyser unknow structure JSON.
Je suis auteur de code dans cette réponse, et tout le code sur mon Github (à l'exception de certains projets a commencé comme la fourche/+traduction).
Personnellement, je utiliser d3-dsv bibliothèque pour ce faire. Pourquoi
reinvent the wheel
?Avec l'arbre qui tremble vous pouvez simplement importer cette fonction en particulier de
d3-dsv
bibliothèqueJe voulais riff off @Christian Langrain la réponse ci-dessus. J'étais confus pourquoi mon fichier CSV seulement eu 3 colonnes ou les en-têtes. C'est parce que le premier élément dans mon json seulement eu 3 clés. Donc, vous devez être prudent avec la
const header = Object.keys(json[0])
ligne. C'est en supposant que le premier élément du tableau est représentatif. J'ai eu malpropre JSON qu'avec certains objets, ayant plus ou moins.J'ai donc ajouté un
array.sort
pour ce qui sera de l'ordre au format JSON par le nombre de touches. Pour que votre fichier CSV sera le nombre maximum de colonnes.C'est aussi une fonction que vous pouvez utiliser dans votre code. Juste le nourrir JSON!
Écrire Csv.