データベースからダンプされた XML データがあり、JSON に再フォーマットする必要があります。私は IBM DataPower データベースを使用しているため、実際にはその XML をJSONxに変換してから、JSONx を JSON に自動的に変換する IBM のデフォルトのトランスレーターを使用する必要があります。
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”
}
私が抱えている問題は、同じ JSON オブジェクトを取得prod
してその一部になることができないことです。color
代わりに、次のような出力が得られます。
{"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>
タグが 1 つの条件を通過し、ループ内で JSON オブジェクトを作成していることはわかりますが、との両方の値を取得した後<xsl:for-each>
にJSON オブジェクトを作成する方法がわかりません。これらの値が正しく解析されていることを確認するにはどうすればよいですか?color
prod