2015-11-19 80 views
0

我正在下载一个json文件,并且内容可用作数组数组。验证json文件

有各种验证(notNull,isNumber等),我想要做的孩子数组的元素。

一个是当我使用Spring批处理,并启用ValidatingItemProcessor和Bean验证适用于我。

但是,我想用Apache等现有的Validator框架编写独立的解决方案,但不想验证为bean,而是直接在阵列上进行验证。

我应该怎样解决这个问题。

我使用的是Spring框架,所以任何围绕它的东西都会有所帮助。

回答

1

我们对我们的spring批处理应用程序使用了JSR验证。我们使用@ NotNull,@ DecimalMin等验证方式对我们的类进行注释。然后我们创建了一个CommonValidator,如

import javax.validation.Validator; 
... 
public class CommonValidator<T> implements ItemProcessor<T, T>{ 

    @Autowired 
    private Validator validator; 

    public T process(T t) throws Exception{ 
     Set<ConstraintViolation<T>> constraintViolations = validator.validate(t); 
     return constraintViolations.isEmpty()? t : null; 
    } 

然后,我们将它添加到CompositeItemProcessor中,如下所示。

<bean id="validateProcessor" class="mypackage.CommonValidator" /> 
class="org.springframework..CompositeItemProcessor"> 
     <property name="delegates"> 
      <list> 
       <ref bean="validateProcessor"/> 
       <ref bean="otherProcessor"/> 

它工作。在类似的行上,你可以编写你自己的验证器来验证你的数组。所以,如果数组值是有效的,那么返回数组。 null返回无效数组。