Ich versuche Jackson JSON zu verwenden, nehme eine Zeichenkette und bestimme, ob es JSON ist. Kann jemand vorschlagen, ein Codebeispiel zu verwenden (Java)?Wie validiere ich JSON mit Jackson JSON
Antwort
nicht sicher, was Ihr Anwendungsfall hierfür ist, aber das sollte es tun:
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() ist veraltet. – Arash
Kurze und elegante Lösung ist hier verfügbar [Danke an @pdem] (http://StackOverflow.com/a/29414638/452708) 'versuchen { ObjectMapper objectMapper = ...; JsonNode jsonNode = objectMapper.readTree (yourJsonString); } catch (JsonProcessingException e) {........} ' – Abhijeet
Beide Methoden wurden abgeschrieben: getJsonFactory(). CreateJsonParser (json). Verwenden Sie dies: getFactory(). CreateParser (JSON) – kiedysktos
würde ich empfehlen, Bean Validation API separat verwendet: das heißt, zunächst binden Daten an ein POJO, dann POJO validieren. Datenformat-Ebenen Schemas sind meiner Meinung nach nicht sehr nützlich: Man muss in der Regel immer noch Probleme auf höherer Ebene validieren, und Schema-Sprachen selbst sind ungeschickt, vor allem. diejenigen, die das validierte Format verwenden (XML-Schema und JSON-Schema haben beide diesen grundlegenden Fehler). Dadurch wird Code modularer, wiederverwendbarer und trennt Probleme (Serialisierung, Datenvalidierung).
Aber ich würde tatsächlich einen Schritt weiter gehen und vorschlagen, dass Sie sich DropWizard anschauen - es integriert Jackson und Validation API-Implementierung (vom Hibernate-Projekt).
Dropwizard scheint sich in ein neues Zuhause (www.dropwizard.io) begeben zu haben und nennt sich jetzt "ein Java-Framework für die Entwicklung von ops-freundlichem, leistungsstarkem, REST-konformem Web Dienstleistungen".Haben Sie nicht gelesen, aber es möglicherweise noch Jackson und Validierungs API integriert. Nicht sicher, ob Sie den ganzen Rest brauchen. – Wivani
Ja, DropWizard integriert ab sofort Jackson und Validation API (Februar 2016). Ich sehe keine Veränderung für das Projekt, es ist an diesem Punkt ziemlich ausgereift. Sie können natürlich andere bindende Bibliotheken verwenden (JAX-RS ist hochgradig steckbar), aber als Basis werden diese 2 Bibliotheken wahrscheinlich übrig bleiben. – StaxMan
Obwohl die Wahrnehmung Antwort wahrscheinlich viele Bedürfnisse passen, gibt es einige Probleme wird es nicht, einer von ihnen ist Nachschlüssel, betrachten Sie das folgende Beispiel fangen:
String json = "{ \"foo\" : \"bar\", \"foo\" : \"baz\" }";
Als Ergänzung können Sie überprüfen, für Nachschlüssel mit dem folgenden Code:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);
objectMapper.readTree(json);
Es JsonProcessingException
auf doppelten Schlüssel oder andere Fehler auslöst.
Mit Jackson verwende ich diese Funktion:
public static boolean isValidJSON(final String json) throws IOException {
boolean valid = true;
try{
objectMapper.readTree(json);
} catch(JsonProcessingException e){
valid = false;
}
return valid;
}
Eine weitere Option wäre mit java.util.Optional in Java 8. Dies ermöglicht es, ein Objekt zurückzukehren und in dem anrufenden Code eines funktioneller Ansatz zu verwenden.
Dies ist eine weitere mögliche Implementierung:
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);
}
}
Dann können Sie diese Methode wie folgt verwenden:
jsonHelper.validateJson(mappingData.getMetadataJson())
.map(e -> String.format("Error: %s at %s", e.getMessage(), e.getLocation().toString()))
.orElse("Valid JSON");
- 1. Wie validiere ich eingehende JSON-Daten in einem REST-Service?
- 2. Jackson JSON Liste mit Objekttyp
- 3. Benutzerdefinierte JSON Deserialisierung mit Jackson
- 4. Parsing JSON Antwort mit Jackson
- 5. Doppeltes JSON Feld mit Jackson
- 6. Fehler mit Jackson und Json
- 7. Jackson - Deserialize verschachtelt JSON
- 8. Jackson JSON Feldzuordnung Großschreibung?
- 9. Wie validiere ich ein Formular mit JSON Schema?
- 10. JACKSON, JSON: Liste Titel
- 11. Json desirialization mit jackson mit Liste der Abstrakte Klasse Jackson
- 12. Validiere JSON-LD und Schema.org
- 13. Convert JSON viele Objekte auf einzelne JSON mit Jackson
- 14. Wie kann ich diesen JSON mit Jackson Annotationen serialisieren?
- 15. Wie schreibe ich Json Array in Datei mit Jackson
- 16. Hinzufügen einer Eigenschaft zu einer JSON-Zeichenfolge mit jackson JSON
- 17. Ausnahme mit Jackson JSON-Bibliothek mit Kamel
- 18. Jackson: kundenspezifische Sammlung Serialisierung JSON
- 19. Frühling Boot jackson - deserialisiert Json mit Rootnamen
- 20. Erstellen von einfacher JSON-Struktur mit jackson
- 21. Jackson JSON Deserialisierung mit Root Element
- 22. Entfernen Sie Nullwerte von Json mit Jackson
- 23. Jackson JSON Marshall ignorieren Getter
- 24. Jackson - deserialisieren json mit dynamischer Schlüssel
- 25. Karte nach JSON konvertieren mit Jackson
- 26. Wie validiere ich die XML-Datei in JSON-Datei konvertiert
- 27. Jackson JSON arbeitet nicht mit CXF
- 28. Serialize java.time.localdate in Json mit Jackson
- 29. Wie validiere ich ein JSON-Objekt in Java?
- 30. Wie jackson JSON-Transfer zu Objekt implementieren
Wie DeFina Sie, dass JSON gültig ist? – Slavus
@Slavus: Jeder String, der den JSON-Syntax-Standard erfüllt, ist ein gültiger JSON. Wir definieren kein gültiges JSON. – Vivek
Ich bin Jahre alt und das war vielleicht 2012 nicht verfügbar, aber denken Sie an [JSON Schema] (http://json-schema.org/)? – Stroboskop