J'essaie d'utiliser Jackson JSON prendre une chaîne et déterminer si elle est JSON valide. Quelqu'un peut-il suggérer un échantillon de code à utiliser (Java)?Comment valider JSON avec Jackson JSON
Répondre
Je ne sais pas ce que votre cas d'utilisation en est, mais cela devrait le faire:
public boolean isValidJSON(final String json) {
boolean valid = false;
try {
final JsonParser parser = new ObjectMapper().getJsonFactory()
.createJsonParser(json);
while (parser.nextToken() != null) {
}
valid = true;
} catch (JsonParseException jpe) {
jpe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return valid;
}
getJsonFactory() est obsolète. – Arash
Une solution courte et élégante est disponible ici [Merci à @pdem] (http://stackoverflow.com/a/29414638/452708) 'try { ObjectMapper objectMapper = ...; JsonNode jsonNode = objectMapper.readTree (yourJsonString); } catch (JsonProcessingException e) {.......}} – Abhijeet
les deux méthodes sont dépréciées: getJsonFactory(). CreateJsonParser (json). Utilisez istead: getFactory(). CreateParser (json) – kiedysktos
Je recommanderais d'utiliser Bean Validation API séparément: qui est, les premières données de se lier à un POJO, puis validez POJO. Niveau de format des données Les schémas ne sont pas très utiles à mon avis: il faut généralement toujours valider les problèmes de niveau supérieur, et les langages de schémas eux-mêmes sont maladroits, en particulier. ceux qui utilisent le format en cours de validation (XML Schema et JSON Schema ont tous deux cette faille de base). Cela rend le code plus modulaire, réutilisable et sépare les problèmes (sérialisation, validation des données).
Mais je voudrais aller un peu plus loin, et je vous suggère de regarder DropWizard - il intègre l'implémentation de l'API Jackson et Validation API (du projet Hibernate).
Dropwizard semble s'être déplacé vers une nouvelle maison (www.dropwizard.io) et s'appelle maintenant "un framework Java pour le développement de web RESTful, facile à utiliser et performant prestations de service".Je n'ai pas lu mais il est possible qu'il intègre encore Jackson et API de validation. Je ne sais pas si vous avez besoin de tout le reste. – Wivani
Oui, DropWizard intègre toujours l'API Jackson et Validation dès maintenant (février 2016). Je ne vois pas ces changements pour le projet, il est assez mature à ce stade. Vous pouvez bien sûr utiliser d'autres bibliothèques de liaison (JAX-RS est fortement connectable), mais en tant que ligne de base, ces 2 bibliothèques resteront probablement. – StaxMan
Bien que la réponse de la perception probablement adapté à de nombreux besoins, il y a des problèmes, il ne sera pas attraper, l'un d'eux est un double des clés, considérons l'exemple suivant:
String json = "{ \"foo\" : \"bar\", \"foo\" : \"baz\" }";
En complément, vous pouvez vérifier dupliquer les clés avec le code suivant:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);
objectMapper.readTree(json);
Il lance JsonProcessingException
sur clé en double ou une autre erreur.
Avec Jackson-je utiliser cette fonction:
public static boolean isValidJSON(final String json) throws IOException {
boolean valid = true;
try{
objectMapper.readTree(json);
} catch(JsonProcessingException e){
valid = false;
}
return valid;
}
Une autre option serait d'utiliser java.util.Optional en Java 8. Cela permet de retourner un objet et à utiliser dans le code appelant une approche plus fonctionnelle.
Ceci est une autre application possible:
public Optional<JsonProcessingException> validateJson(final String json) {
try{
objectMapper.readTree(json);
return Optional.empty();
} catch(JsonProcessingException e){
return Optional.of(e);
} catch(IOException e) {
throw new RuntimeException(e);
}
}
Ensuite, vous pouvez utiliser cette méthode comme ceci:
jsonHelper.validateJson(mappingData.getMetadataJson())
.map(e -> String.format("Error: %s at %s", e.getMessage(), e.getLocation().toString()))
.orElse("Valid JSON");
- 1. Jackson valider l'entrée json objet
- 2. Parsing JSON avec Jackson
- 3. Désérialisation JSON avec Jackson
- 4. Comment valider une structure json spécifique dans Jackson?
- 5. Jackson JSON - horodatages avec ids
- 6. JSON question désérialisation avec jackson
- 7. Json sérialisation avec JSONView Jackson
- 8. Parse Json avec Jackson Android
- 9. Comment valider JSON avec simplejson
- 10. Comment modifier un tableau JSON en éléments JSON avec Jackson
- 11. Vue Jackson JSON avec géométrie
- 12. Parse JSON simple avec Jackson
- 13. Analyse JSON avec Jackson Java
- 14. Comment désérialiser un JSON déballé avec Jackson?
- 15. Comment analyser xml en json avec jackson
- 16. Jackson json désérialisation, avec l'élément racine de json
- 17. Spring mvc jackson json
- 18. valider json dans scala avec lift-json
- 19. json valider avec json schema dans powershell
- 20. Aide Jackson JSON (Serializer)
- 21. JSON et Jackson
- 22. Jackson configure own json
- 23. Jackson Json s'échappant
- 24. Jackson JSON Views ignorés
- 25. Jackson JSON ObjectMapper.readvalue
- 26. Jackson désérialisation JSON GMaps
- 27. TokenBuffer Jackson Json
- 28. tableau JSON fusion Jackson
- 29. JSON jackson mapping ask
- 30. Jackson Json sérialisation
Comment DeFina que JSON est valide? – Slavus
@Slavus: Toute chaîne répondant à la norme de syntaxe JSON est un JSON valide. Nous ne définissons pas un JSON valide. – Vivek
J'ai des années de retard et cela peut ne pas avoir été disponible en 2012, mais pensez-vous à [schéma JSON] (http://json-schema.org/)? – Stroboskop