Je voudrais convertir le fichier CSV en JSON en utilisant c #. Je sais qu'il y a beaucoup de questions similaires, mais je ne pouvais pas trouver quelque chose qui pourrait m'aider.
fichier source ressemble à ceci: p> première ligne n'est pas En-tête (en fait, je ne sais pas comment l'appeler - l'en-tête a généralement des noms de chaque propriété).
Le résultat devrait ressembler à ce p> public class Headers
{
public string TransactionFrom { get; set; }
public string TransactionTo { get; set; }
}
public class Results
{
public string logisticCode { get; set; }
public string siteId { get; set; }
public string userId { get; set; }
public string dateOfTransaction { get; set; }
public string price { get; set; }
public string packSale { get; set; }
}
3 Réponses :
Je ne suis pas sûr que je puisse vous aider avec des codes que votre source de CSV est très déroutante, mais je vais essayer de vous donner quelques idées qui pourraient travailler.
Tout d'abord, vous n'avez pas besoin d'un modèle classer. Je veux dire, vous pouvez l'utiliser si vous le souhaitez, mais semble inutile ici. P>
Suivant Up lit le fichier CSV. Comme vous n'avez pas posté de codes en relation avec cela et n'a mentionné aucun problème avec la lecture du fichier, je suppose que vous lisez le fichier correctement. Lire le CSV et écrire un JSON à partir de celui-ci est relativement facile. Cependant, le fichier CSV elle-même semble très déroutant. Comment lis-tu ça? Est-ce que vous le lisez comme texte brut? Avez-vous des en-têtes de colonne ou des colonnes au moins? P>
Si vous lisez le fichier en tant que texte brut, je suppose que vous n'avez qu'une seule façon. Et cela scindre la chaîne et construit une nouvelle chaîne avec les valeurs écartées. La scission doit être relativement facile que vous avez maintenant tout ce que vous avez à faire est, utilisez simplement les cordes à l'intérieur < code> valeurs code> pour construire une nouvelle chaîne. Vous pouvez utiliser le Lignes directrices: P> StringBuilder en C # a > p> créer une nouvelle ligne dans StringBuilder P> Doubles citations à l'intérieur de la chaîne P> Espérons que cela vous donne quelques idées . p> p> ; code> (semi-points) qui séparait chaque colonne / données. Donc, l'idée de base scindre la chaîne et le stocke dans une matrice ou une liste, quelque chose comme ceci: p> stringbuilder code> pour cela, ou un moyen simple (non réalisable) serait une concaténation de chaînes. Personnellement, je vous recommanderais d'aller avec le stringbuilder code>. p>
En réalité, lire le fichier CSV n'est pas un problème (sauf pour la première ligne). J'utilise StressBuilder. Je n'ai pas d'en-têtes de colonne dans le fichier texte car le contenu du fichier ne changera pas (sera toujours identique). Seul problème est de créer une chaîne avec la première ligne. Je pense que je vais essayer de créer StressBuilder comme vous le mentionnez. Recommandez-vous une meilleure mise en forme du fichier texte?
@ JENIK2205, lorsque vous utilisez le constructeur de cordes, vous pouvez créer de nouvelles lignes pour chaque élément du JSON. À propos de la mise en forme, je suggérerais de ne pas le faire en code. Plutôt, enregistrez la chaîne que vous avez à partir de StringBuilder code> à un fichier JSON régulier et ouvrez-le dans n'importe quel éditeur, comme le code vs, puis le format là-bas. Et vous n'avez pas besoin de vous inquiéter de la mise en forme car ces jours-ci, presque tous les éditeurs de code formatent automatiquement ces fichiers.
En réalité, le format de données JSON peut être très important s'il va être utilisé par un autre programme qui ne s'attend pas à ce que les dates (ou les décimales, etc.) soient sérialisées en tant que sérialiszer JSON. La même chose que concaténant la chaîne JSON manuellement peut être difficile lorsque vous devrez ajouter un champ de plus par exemple (comparer à l'ajout de la nouvelle propriété à la classe de modèle).
Ce code pourrait vous aider
Step1 - Créer une classe de modèle p> étape 2 - diviser le fichier et lire les enregistrements p> sortie - p>
avec Cinchoo etl , vous pouvez le faire comme suit
Définir structures de classe comme ci-dessous p>
[
{
"TransactionFrom": "2019-12-01T00:00:00.000Z",
"TransactionTo": "2019-12-10T23:59:59.999Z",
"Transactions": [
{
"logisticCode": "005033971003",
"siteId": "48",
"userId": "141",
"dateOfTransaction": "false",
"price": "50"
}
{
"logisticCode": "005740784001",
"siteId": "80",
"userId": "311",
"dateOfTransaction": "false",
"price": "100"
}
]
}
]
Vous pouvez trouver comment utiliser le CSVHelper ici . Le seul problème est que vous devez diviser la première ligne du fichier
Est-ce que cela répond à votre question? CSVHelper - lire différents types d'enregistrements dans les mêmes CSV
Vous avez plusieurs éléments d'élément dans le même CSV. Suivez la question liée pour voir comment cela se fait avec l'aide de CSV. Fondamentalement, il fait bouillir pour créer deux objets d'objet, obtenir une ligne de type A, déplacer en partie avec le type B. Obtenir des lignes de type B. Le Sélectionné Réponse peut sembler déroutant car il écrit le CSV à la volée au lieu d'avoir une variable de chaîne pour le tenir. Mais c'est juste le
écrivain.writeline ( code> et rincer.Csvhelper serait un grand ... Aidez-vous ... ici.