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 字符串函数检查 codedescription 的值,否则您需要转换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!