如何在java中validationJSON对象?

我使用sf.json库来映射我的Web应用程序中的传入请求的表单数据。

让我们说传入的请求是http:// localhost:8080 / app / addProfile ,表单数据为:

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

服务器端 :

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

这种方法的主要问题是如果JSON结构中有少许修改,则需要修改整个代码。

是否有任何api我可以配置validation所需的规则?

您可以使用Jsonvalidation器: – https://github.com/fge/json-schema-validator

或者您可以尝试使用Google Gson解析Json并捕获语法exception以validation它,如下所示: –

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

对于通用数据validation,请在Json模式中定义规则,然后仅针对此模式validation传入的Json。
在模式中,您可以定义它可以包含的值的类型,范围等。
对于模式生成,您可以使用以下在线工具: – http://jsonschema.net/#/

您可以参考这篇文章,快速了解json架构: – http://json-schema.org/example1.html

例:-

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

上面的代码定义了Json模式中的价格,当Json对象针对这个模式进行validation时,它将确保价格不应该为零,它应该大于零,它应该是一个数字。 如果在价格中传递字符串或零或某些负值,则validation将失败。

使用以下命令打印JSON对象:

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

然后在线使用jsonvalidation器来validationjson。