[英]How to convert JSON array to XML element for WADL
我正在嘗試從Web服務檢索數據,而專有的ETL工具(必須使用)需要一個.WADL文件才能連接到REST服務。
到目前為止,我已經在SOAP UI的幫助下從API端點創建了一個.WADL文件,之后,我將模式定義(用於響應)放在了<grammars> </grammars>
標記之間。 為此,我已經將預期的JSON輸出從Web服務轉換為XML,然后借助在線格式化程序轉換為XSD。
這對於大多數原始JSON元素而言都可以正常工作,但是當該元素是JSON數組(無名稱)時,我的ETL工具無法解析該值。
為了說明這一點,Web服務的輸出看起來與此類似(我將輸出縮短了一點):
{
"report": {
"type": "overtime",
"elements": [ {
"id": "datetime",
"name": "Date"
}],
"totals": ["51245123"]
}
}
然后,XSD如下所示(在我已經刪除了一些不需要的名稱為“ element”的元素之后,在線轉換器將其替換為原始JSON數組(例如,“ elements”)):
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="report">
<xs:complexType>
<xs:sequence>
<xs:element name="elements">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="id"/>
<xs:element type="xs:string" name="name"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="totals">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:int" name="element"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="type"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
當我在.WADL文件中使用上述XSD時,由於不匹配,我的工具在解析“ totals”元素時失敗了。 當我刪除名為“ element”的復雜類型元素並僅使用<xs:element type="xs:int" name="totals"/>
,我將獲得除元素名稱“ totals”外的所有屬性值。 這顯示為空。
這意味着我可以獲取JSON數組“元素”的數據,但不能獲取“總計”的數據。 如我所見,我的問題僅在於沒有名稱的“普通” JSON數組,因為我無法將它們綁定到具有相同名稱的XS元素。
如果要編寫代碼,我將嘗試從totals [0]中獲取值,但是我無法控制該工具如何解析服務器的JSON響應。 但是,由於我能夠獲取所有屬性的值(也可以從其他使用名稱/鍵的JSON數組中),我想有一種方法也可以使它適用於“普通” JSON數組。
誰能建議我如何在XSD中處理那些JSON數組?
謝謝。
由於我今天很幸運,因此我仍然建議嘗試使用totals
元素:
<xs:element name="totals" type="xs:string"/>
或者該工具可以處理演員表:
<xs:element name="totals" type="xs:int"/>
(考慮elements
數組映射到XML的方式,對於totals
,似乎簡單類型比復雜類型更合適)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.