2015-08-16 28 views
7

Web başvurumda java'da gelen istek için form verilerini eşlemek için sf.json kütüphanesini kullanıyorum.Java'da JSON nesnesini doğrulama nasıl yapılır?

gelen istek olarak form verilerinden http://localhost:8080/app/addProfile olduğunu düşünelim:

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" 
} 

Sunucu Tarafı:

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 
} 
... 
... 
... 

Bu yaklaşımın en büyük sorun olduğunu JSON yapısında küçük değişiklik varsa, daha sonra tüm kodun değiştirilmesi gerekiyor.

Doğrulama için gerekli kuralları yapılandırabileceğim bir API var mı?

+0

Sizin tarafınızdan sağlanan doğrulamaya ihtiyaç duyacağınız durumu düşünemiyorum. Adları (ilk soyadı) 70'den fazla 100 karakterden fazla olan çok sayıda insan var. – itwasntme

+1

Bazı benzersiz geçerlilik kurallarına bakmayı tercih ederim: yaş, pozitif sayı, tarih, ay-ayı-yıl, kullanıcı her kategoride en az 2 beceri sağladı. – itwasntme

cevap

7

Sen Json doğrulayıcı kullanabilirsiniz: - https://github.com/fge/json-schema-validator

Veya sadece aşağıdaki gibi doğrulamak için Google GSON ve yakalamak sözdizimi istisna kullanarak Json ayrıştırmak için deneyebilirsiniz: - jenerik için

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

Veri doğrulama, Json şemasındaki kuralları tanımlayın ve sonra gelen Json'u bu şemaya göre doğrulayın. şemada
vb şema nesil için
o içerebilir değerlerin türünü, aralık tanımlayabilirsiniz, sen gibi çevrimiçi aracını kullanabilirsiniz: - Bu yayını başvurabilirsiniz http://jsonschema.net/#/

, json şemanın hızlı bir anlayışa sahip olmak : - http://json-schema.org/example1.html

Örnek: - Yukarıdaki kod

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

Json şemasındaki fiyat, Json nesnesi bu şemayla doğrulandığında, bunun fazla olması gerektiği, bu fiyatın sıfır olmamalıdır sağlayacaktır tanımlar sıfırdan ve bir sayı olmalıdır. Bir dize veya sıfır veya bir negatif değer fiyattan geçerse, doğrulama başarısız olur.

+0

Merhaba Amit teşekkürler, net.sf.json nesnesini doğrular mı? – N3WOS

+1

Json sadece bir veri formatıdır, Json için bir şema tanımlarsınız ve daha sonra gelen jsonu bu şemaya göre doğrularsınız. –

+0

@ N3WOS "Doğrulama" ile ne demek istiyorsunuz? Gelen 'json' verilerinin geçerli olup olmadığını (spesifikasyon açısından doğru mu) kontrol etmek istersiniz veya kullanıcı girişini kontrol etmek istersiniz (18 yaş üstü, vs)? – itwasntme

-6

kullanarak yazdır JSON nesnesi:

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

Sonra json doğrulamak için çevrimiçi bir json doğrulayıcı kullanabilirsiniz.

İlgili konular