DataPower:使用 XSLT 将 Json 响应映射到 xml
DataPower: Map Json response to xml using XSLTs
我的 SOR 应用程序正在返回结果集,我正在执行以下二进制编码和解码以检索 json
<xsl:variable name="response_json">
<xsl:copy-of select="dp:decode(dp:binary-encode($resp/result/binary/node()), 'base-64')"/>
</xsl:varibale>
response_json - {"code":"00", "description":"Success"}.
现在我们如何解析上面的 response_json 并使用 XSLT
将“代码”/“描述”值分配给 xsl:variables 和上下文变量
你有两个选择,IMO 一好一坏...
让我们从您正在使用 XSLT 处理 JSON 数据时已经存在的问题开始。
更糟糕的选择当然是仅将 JSON 用作文本并使用 XSLT 字符串函数检查 code
和 description
的值,否则您需要转换JSON 数据到 JSONx 中,可以通过使用查询参数到 XML 的转换在 XSLT 中处理。
为此,您需要将 JSON 传递给新的操作(转换 QP),然后传递给新的转换。
然后您可以使用 DP 的 JSONx 来处理您想要的任何“JSON”数据操作,如 XSLT 样式表中的 XML 并在完成后调用 store://jsonx2json.xsl
在新的 Transform 中将其转换为“真实”JSON。
我假设您使用的是 dp:url-open()
,因为您在变量中得到响应,但如果您的服务具有 Request/Resoonse 作为 JSON,则上下文 VAR __JSONASJSONX
将自动为您保留一个 JSONx 对象,您可以将其用作任何 XSLT 转换操作的 INPUT
。
话虽如此,让我们转到好的解决方案;使用 GWS
!
GWS 被添加到 DataPower 以处理 JSON(以及 XML 以外的任何内容),您也可以使用 dp:gatewayscript()
从 XSLT 调用 GWS。请参阅此示例:https://github.com/ibm-datapower/datapower-samples/blob/master/gatewayscript/example-ext-func-dp-gwscript.xsl
如果您的转换没有做任何XML特定的事情,我会把它重写成 GWS!
我的 SOR 应用程序正在返回结果集,我正在执行以下二进制编码和解码以检索 json
<xsl:variable name="response_json">
<xsl:copy-of select="dp:decode(dp:binary-encode($resp/result/binary/node()), 'base-64')"/>
</xsl:varibale>
response_json - {"code":"00", "description":"Success"}.
现在我们如何解析上面的 response_json 并使用 XSLT
将“代码”/“描述”值分配给 xsl:variables 和上下文变量你有两个选择,IMO 一好一坏...
让我们从您正在使用 XSLT 处理 JSON 数据时已经存在的问题开始。
更糟糕的选择当然是仅将 JSON 用作文本并使用 XSLT 字符串函数检查 code
和 description
的值,否则您需要转换JSON 数据到 JSONx 中,可以通过使用查询参数到 XML 的转换在 XSLT 中处理。
为此,您需要将 JSON 传递给新的操作(转换 QP),然后传递给新的转换。
然后您可以使用 DP 的 JSONx 来处理您想要的任何“JSON”数据操作,如 XSLT 样式表中的 XML 并在完成后调用 store://jsonx2json.xsl
在新的 Transform 中将其转换为“真实”JSON。
我假设您使用的是 dp:url-open()
,因为您在变量中得到响应,但如果您的服务具有 Request/Resoonse 作为 JSON,则上下文 VAR __JSONASJSONX
将自动为您保留一个 JSONx 对象,您可以将其用作任何 XSLT 转换操作的 INPUT
。
话虽如此,让我们转到好的解决方案;使用 GWS
!
GWS 被添加到 DataPower 以处理 JSON(以及 XML 以外的任何内容),您也可以使用 dp:gatewayscript()
从 XSLT 调用 GWS。请参阅此示例:https://github.com/ibm-datapower/datapower-samples/blob/master/gatewayscript/example-ext-func-dp-gwscript.xsl
如果您的转换没有做任何XML特定的事情,我会把它重写成 GWS!