小编典典

如何在Java中验证JSON对象?

json

我使用sf.json库在Java 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?


阅读 285

收藏
2020-07-27

共1个答案

小编典典

您可以使用Json验证器:-https: //github.com/fge/json-schema-
validator

或者,您可以尝试使用Google Gson解析Json并捕获语法异常以进行验证,如下所示:-

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

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

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

例:-

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

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

2020-07-27