2015-08-16 7 views
7

Ich benutze sf.json Bibliothek, um Formulardaten für eingehende Anfrage in meiner Webanwendung in Java abzubilden.Wie validiere ich ein JSON-Objekt in Java?

sagen Ermöglicht die eingehende Anforderung ist http://localhost:8080/app/addProfile mit Formulardaten als:

formData: { 
    "name":"applicant Name", 
    "Age":"26", 
    "academics":{ 
     "college":"80", 
     "inter":"67", 
     "matriculation":"89" 
    }, 
    "skill":{ 
     "computer":"c,c++,java", 
     "maths":"limit,permutation,statistics" 
    }, 
    "dateOfBirth":"09-07-1988" 
} 

Server Side:

String requestFormData=request.getParameter("formData"); 
JSONObject formData = JSONObject.fromObject(requestFormData); 
String name= formData.getString("name"); 

if(name.length>70){ 
//error message for length validation 
} 

if(!name.matches("regex for name"){ 
//error message for name validation 
} 
... 
... 
... 

Das Hauptproblem bei diesem Ansatz ist, wenn es geringfügige Änderung in der JSON Struktur, dann muss der gesamte Code geändert werden.

Gibt es eine API, in der ich die Regeln konfigurieren kann, die für die Validierung benötigt werden?

+0

Ich kann nicht an Situation denken, wo Sie Art der von Ihnen zur Verfügung gestellten Validierung brauchen werden. Es gibt viele Leute mit Namen (Vor- und Nachname), die länger als 70 oder sogar 100 Zeichen sind. – itwasntme

+1

Ich würde eher nach einigen einzigartigen Validierungsregeln suchen wie: Alter ist positive Zahl, Datum enthält Tag-Monat-Jahr, Benutzer hat mindestens 2 Fähigkeiten in jeder Kategorie zur Verfügung gestellt. – itwasntme

Antwort

7

können Sie den Validator Json verwenden: - https://github.com/fge/json-schema-validator

Oder Sie können einfach versuchen, die Json mit Google Gson und fangen Syntax Ausnahme zu analysieren es zu validieren wie unten: -

try{ 
JsonParser parser = new JsonParser(); 
parser.parse(passed_json_string); 
} 
catch(JsonSyntaxException jse){ 
System.out.println("Not a valid Json String:"+jse.getMessage()); 
} 

Für generic Datenvalidierung, definieren Sie die Regeln in Ihrem JSON-Schema und validieren Sie dann einfach den eingehenden JSON gegen dieses Schema.
In Schema können Sie die Art von Werten definieren sie enthalten können, Bereich usw.
Für Schema Generation, können Sie Online-Tool verwenden, wie: - http://jsonschema.net/#/

Sie diesen Beitrag beziehen, schnelles Verständnis von json Schema haben : - http://json-schema.org/example1.html

Beispiel: -

"price": { 
      "type": "number", 
      "minimum": 0, 
      "exclusiveMinimum": true 
     } 

Above Code definiert den Preis in Json-Schema, wenn JSON-Objekt gegen dieses Schema validiert wird, wird es, dass der Preis sicher, nicht Null sein sollte, sollte es mehr als Null und es sollte eine Nummer sein. Wenn eine Zeichenfolge oder ein Nullwert oder ein negativer Wert im Preis übergeben wird, schlägt die Validierung fehl.

+0

Hallo Amit danke, validiert net.sf.json Objekt? – N3WOS

+1

Json ist nur ein Datenformat, Sie definieren ein Schema für Json und validieren dann einfach den eingehenden JSON gegen dieses Schema. –

+0

@ N3WOS was meinst du mit "Validierung"? Möchten Sie überprüfen, ob eingehende json-Daten gültig sind (in Bezug auf die Spezifikation korrekt) oder möchten Sie Benutzereingaben überprüfen (Alter über 18 usw.)? – itwasntme

-6

Drucken Sie die JSON-Objekt:

Log.e("JSON OBJECT CREATED:", jsonobject.toString()); 

Und dann eine json Validator nutzen Online die json zu validieren.