Como validar um objeto JSON em java?

Uso sf.JSON library to map form data for incoming request in my web application in java.

Digamos que o pedido de entrada é ... http://localhost:8080/app/addProfile com os dados do formulário como:

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

Lado Do Servidor:

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

o principal problema com esta abordagem é se houver uma pequena modificação na estrutura JSON, então todo o código precisa ser modificado.

Existe alguma api onde eu possa configurar as regras que são necessárias para validação?

Author: itwasntme, 2015-08-16

2 answers

Pode usar o agente de validação Json: - https://github.com/fge/json-schema-validator

Ou pode simplesmente tentar analisar o Json usando o Google Gson e a excepção de sintaxe catch para o validar como em baixo: -

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

Para a validação de dados genéricos, defina as regras do seu esquema Json e, em seguida, valide apenas o Json recebido contra este esquema.
No esquema você pode definir o tipo de valores que ele pode conter, intervalo, etc.
Para a geração de esquemas, você pode usar online ferramenta como: - http://jsonschema.net/#/

Você pode consultar este post, para ter uma compreensão rápida do esquema json: - http://json-schema.org/example1.html

Exemplo: -

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

O código acima define o preço no esquema Json, quando o objeto Json é validado contra este esquema, ele irá garantir que o preço não deve ser zero, deve ser mais do que zero e deve ser um número. Se uma string ou zero ou algum valor negativo for passado no preço, a validação falhar.

 9
Author: Amit Bhati, 2015-08-16 19:09:44

Imprime o objecto JSON usando:

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

E depois usar um validador json online para validar o json.

 -7
Author: Vivek Choudhary, 2016-11-09 06:04:17