我认为我应该问的第一个问题是 - 是否可以使用XSD验证json有效负载?无论如何,CXF给出的例子都使用XSD。
我遵循CXF的指示 - http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-Schemavalidation
(1)起初它抱怨
"cvc-elt.1: Cannot find the declaration of element 'OSDCreateAppointmentRequest'"
(2)为了解决这个问题,建议给json对象添加一个名称空间,因为没有"命名空间" Json的概念,但XSD有
(3)所以我将名称空间添加到Json对象,如下所示
<property name="inTransformElements">
<map>
<entry key="OSDCreateAppointmentRequest" value="{http://www.w3.org/2001/XMLSchema}OSDCreateAppointmentRequest"/>
</map>
</property>
现在抱怨
cvc-elt.1: Cannot find the declaration of element 'ps1:OSDCreateAppointmentRequest'
嗯&#34; ps1&#34;看起来像命名空间前缀,不知道它来自哪里。
有什么建议吗?您对此的体验将受到高度赞赏!
答案 0 :(得分:0)
W3C XML模式(XSD)只能用于验证XML文件。
JSON不是XML。因此,没有任何XML技术适用于JSON(至少,没有任何对相应XML的转换)。 也就是说,XSD不能用于验证JSON。
相反,JSON有自己的架构(当然是用JSON编写的),请参阅: http://json-schema.org
答案 1 :(得分:0)
我知道自问题发布以来已经有一段时间了。我得到了这个工作。我使用它的方法是在org.apache.cxf.jaxrs.provider.json.JSONProvider中使用以下属性
<property name="namespaceMap" ref="jsonNamespaceMap"/>
并声明名称空间映射
<util:map id="jsonNamespaceMap">
<entry key="<your-namespace>" value="<prefix>"/>
</entry>
</util:map>
希望这有帮助。