簡體   English   中英

如何將JSON數組轉換為WADL的XML元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM