我有一些從我的數據庫轉儲的XML數據,我需要將它重新格式化爲JSON。我使用的是IBM DataPower數據庫,因此實際上我需要將該XML轉換爲JSONx,然後使用IBM的默認轉換程序,該轉換程序會自動將JSONx轉換爲JSON。JSONX到JSON轉換
我很難定義JSONx數組的元素。下面是我目前想:
XML
<sql result="success">
<row>
<column>
<name>Prod</name>
<value>Acura</value>
</column>
<column>
<name>Color</name>
<value>SILVER</value>
</column>
<column>
<name>Prod</name>
<value>Accord</value>
</column>
<column>
<name>Color</name>
<value>Gold</value>
</column>
</row>
</sql>
期望中的JSON輸出
{"Category" : [
{「prod」: 「Acura」, "Color" : 「Silver」},
{「prod」: 「Accord」, "Color" : 「Gold」}
],
"Status" : 「Success」
}
我遇到的問題是,我不能讓prod
和color
成爲同一個JSON對象的一部分。像這樣的相反,我得到的輸出:
{"Category": [{
"ID": [
": Acura",
": Accord"
],
"NAME": [
": SILVER",
": Gold"
]
}]}
下面是我使用的是產生問題的JSON的的JSONx代碼:
<json:object
xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx">
<json:array name="Category">
<json:object>
<xsl:for-each select="//column">
<xsl:variable name="colName" select="name" />
<xsl:if test="$colName = 'Prod'">
<json:string name="Prod">:
<xsl:value-of select="value" />
</json:string>
</xsl:if>
<xsl:if test="$colName = 'Color'">
<json:string name="Color">:
<xsl:value-of select="value" />
</json:string>
</xsl:if>
</xsl:for-each>
</json:object>
</json:array>
</json:object>
我可以告訴大家,<xsl:for-each>
標籤正在經歷一個條件並在循環中創建JSON對象,但我不明白如何在之後創建JSON對象,它將獲取color
和prod
的值。我怎樣才能確保這些值被正確解析?
慎用那些聰明的引號.. – Eric