我从我的数据库中转储了一些 XML 数据,我需要将其重新格式化为 JSON。我使用的是 IBM DataPower 数据库,因此我实际上需要将该 XML 转换为JSONx,然后使用 IBM 的默认转换器,它会自动将 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