Y a-t-il un moyen de convertir la carte de JSON String par JSON Schema? Je dois faire cela par Json Schema parce que je ne sais pas si l'objet de la carte est une chaîne ou un numéro. Par exemple, j'ai la CSV qui ressemble à ceci: J'ai besoin de le convertir en json string "{" nom ":" 1 ", 'année': 1}" code> et je peux savoir si 1 est une chaîne (dans un cas de nom) ou numéro (dans un cas de l'année) uniquement par le schéma JSON. p> p>
5 Réponses :
Vous pouvez utiliser une bibliothèque org.json: sortie: p>
yep, mais ma carte est: map.put ("nom", "1"); map.put ("année", "1"); Les deux valeurs sont des chaînes et dans le schéma JSON est la configuration de ce nom de la chaîne et l'année est numéro.
Vous allez le lire toujours comme une chaîne. Ensuite, vous pouvez le vérifier par stringutils.isnumérique (année) et le jeter en entiers s'il est numérique.
Ici: Stackoverflow.com/Questtions/1102891/...
Ce n'est pas une solution pour la propriété de nom, il devrait rester à la chaîne
Je le lis avec com.fasterxml.jackson.dataformat.csv.csvmapper
Vous pouvez utiliser GSON pour cela.
Il est très facile d'utiliser un peu puissant.
Pour l'instant, j'ai pu résoudre tous les problèmes de ce problème. ( https://github.com/google/gson )
yep, mais ma carte est: map.put ("nom", "1"); map.put ("année", "1"); Les deux valeurs sont des chaînes et dans le schéma JSON est la configuration de ce nom de la chaîne et l'année est numéro.
C'est pourquoi la carte est
Vous pouvez convertir votre carte en ma carte
Oui, je peux, mais comment puis-je savoir si la valeur pour l'année est une chaîne ou un entier? Quand je l'ai lu de CSV
jackson a un Module pour analyser les documents CSV . En supposant que vous ayez déjà des dépendances de Jackson dans votre projet, vous devez ajouter ce qui suit selon: puis créer une classe pour définir votre schéma et tenir les valeurs (faites attention à la analyser le document CSV dans une liste et écrivez enfin la liste sur une chaîne JSON: p> @jsonpropertyorder code> < / a> Annotation, comme il définit l'ordre des colonnes CSV): p>
Je pense que c'est la meilleure solution!
Je n'ai pas de classe de pojo, je n'ai que JSON Schema
Après avoir lu vos commentaires, je suggère que c'est ce dont vous avez besoin. Ceci est une solution Java simple. Je suppose qu'il y a des bibliothèques qui peuvent vous aider à analyser le CSV. J'espère que j'ai pu vous aider
donné CSV: p> code Java: p> la sortie être: p>
Je ne connais pas les éléments du CSV ou de leur ordre, c'est défini dans le schéma JSON
Vous pouvez essayer quelque chose comme celui-ci à l'aide de Jackson:
La seule chose que vous devez implémenter par vous-même est la deuxième méthode pour convertir votre CSVSchema.json vers une carte contenant le nom de la colonne et le type de colonne. P>
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-csv</artifactId> <version>${jackson.version}</version> </dependency>
Oui, cela peut être une solution, merci. Je l'ai essayé mais j'ai eu un autre problème avec ça, peut-être que vous connaissez la réponse? Stackoverflow.com/ Questions / 55067378 / ...
Essayé environ deux heures et n'a pas trouvé de solution. On dirait que Jackson ignore le schéma. Une autre solution pourrait être de transformer le JSON en un nouveau respectant le schéma
Pouvez-vous poster vos tentatives ici. Je veux dire ce qui est l'entrée et la sortie attendue?
@Ssudhirojha j'ai édité la question
Donc, votre entrée n'est pas un
mappe code> mais
csv code> fichier. Donc, vous devez lire
csv code> et après cela les convertit sur
JSON code>. Si le fichier contient de nombreuses lignes, vous devez générer
json tableau code>:
[{...}, {...}, ..] code>. Ou c'est toujours une ligne
csv code> fichier?
Dans ce cas, j'ai besoin de générer une matrice JSON