gpt4 book ai didi

mule - Anypoint Studio 中的自定义 Json 验证

转载 作者:行者123 更新时间:2023-12-03 02:09:06 25 4
gpt4 key购买 nike

我正在尝试使用 json 模式验证器来验证 JSon。但它返回一条通用消息。“Json 内容不符合架构”。我有一个 HTTP POST REQUEST,它发送如下有效负载:

{ "key1" : "value1", "key2" : "value2" ,"key3": "value3" }

如果 key1 和 key2 丢失。我希望它给出如下错误消息:

{{
errorCode :1001,
errorMessage : key1 is missing",
},
errorCode :1002,
errorMessage : key2 is missing"
}
}

我尝试将错误写入文件(包含所有警告和消息的 json 文件}看起来像这样:

{
"level" : "error",
"domain" : "validation",
"keyword" : "required",
"message" : "object has missing required properties ([\"key1\",\"key2\",\"key3\"])",
"required" : [ "key1", "key2", "key3"],
"missing" : [ "key1", "key2"]
}

这只是该文件的一小部分。我必须循环遍历该文件才能获取此信息。有没有其他方法,我可以执行自定义验证并向用户返回正确的错误消息。

编辑1:

我创建了以下 RequestObj 类:

公共(public)类RequestObj {

@Valid
@NotBlank
@NotNull
private String key1;

@Valid
@NotBlank
private String key2;

@Valid
@NotBlank
private String key3;

@Override
public String toString() {
return "RequestObj [key1=" + key1 + ", key2=" + key2 + ", key3=" + key3 + "]";
}

enter image description here

它不会验证 key1 是否为空。

postman 请求:

POST/验证 HTTP/1.1主机:本地主机:8081内容类型:application/json

{ “key2”:“gg”, “键3”:“嗯”}

编辑2: enter image description here

当我实现验证器接口(interface)时。我无法访问骡子事件。在这种情况下,我将如何访问需要验证的 json?

最佳答案

enter image description here

这是我对 json 输入执行自定义验证后的结果。我使用 JSR-303 注释来验证数据。

class Example{ 
@NotBlank
@Size(min = 3, max = 5)
private String key1;

@Pattern(regexp=".+@.+\\.[a-z]+") // email
private String key2;

private String key3;
}

然后我编写了一个自定义验证器,并通过传递所有值来调用静态函数 validate:

public class ValidationServiceImpl {

public static HashMap<String,String> validate(String key1 , String key2 , String key3) {
HashMap<String,String> result = new HashMap();
Example req = new Example(key1 , key2, key3);
Validator validator;
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
validator = validatorFactory.getValidator();
Set<ConstraintViolation<Example>> violations = validator.validate(req);
if(!CollectionUtils.isEmpty(violations)) {
for (ConstraintViolation<Example> violation : violations)
{
String propertyPath = violation.getPropertyPath().toString();
String message = violation.getMessage();
result.put(propertyPath, message);
}
}
return result;
}

}

结果是返回所有违规的 HashMap 。记录它会给你结果。

所需的 POM 依赖项是:

<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator-annotation-processor -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.1.0.Final</version>
</dependency>


<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.el/javax.el-api -->
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.el -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>

关于mule - Anypoint Studio 中的自定义 Json 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com