2014-10-04 79 views
0

我認爲我應該問的第一個問題是 - 是否可以使用XSD驗證json載荷?無論如何,CXF給出的例子都使用XSD。CXF - Json模式驗證

我按照指令從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' 

井「PS1」看起來像一個命名空間前綴,不知道它從何而來。

有什麼建議嗎?您將對此感到高興!

回答

0

W3C XML模式(XSD)只能用於驗證XML文件。

JSON不是XML。因此,沒有XML技術適用於JSON(至少沒有任何轉換爲​​相應的XML)。 也就是說,XSD不能用於驗證JSON。

相反,JSON有它自己的模式(用JSON,當然),請參閱: http://json-schema.org

+0

是的,這對我有意義。奇怪爲什麼CXF的人沒有提到這一點。 – 2014-10-05 11:25:12

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> 

希望這有助於。