json - DataPower:使用 XSLT 将 Json 响应映射到 xml
问题描述
我的 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 数据转换为可以在 XSLT 中处理的 JSONx,方法是将查询参数转换为 XML . 为此,您需要将 JSON 传递给一个新的 Action (Convert QP),然后再传递给一个新的 Transform。
然后,您可以使用 DP 的 JSONx 来处理您希望在 XSLT 样式表中作为 XML 的任何“JSON”数据操作,并在完成后调用store://jsonx2json.xsl
新的 Transform 以将其转换为“真正的”JSON。
我假设您dp:url-open()
在变量中获取响应时使用的是 a,但是如果您的服务将 Request/Resoonse 作为 JSON,则上下文 VAR__JSONASJSONX
将自动为您保存一个 JSONx 对象,您可以将其用作INPUT
任何 XSLT 转换操作。
话虽如此,让我们转向好的解决方案;使用GWS
!
GWS 添加到 DataPower 以处理 JSON(以及除 XML 之外的任何内容),您也可以使用 XSLT 从 XSLT 调用 GWS dp:gatewayscript()
。请参阅此示例:https ://github.com/ibm-datapower/datapower-samples/blob/master/gatewayscript/example-ext-func-dp-gwscript.xsl
如果您的 Transform 没有做任何特定于 XML 的操作,我会将其重写为 GWS!
推荐阅读
- python - 强制 Django 在同一个应用程序中识别多个“模型”文件夹?
- python - 熊猫 concat 的奇怪行为
- wordpress - Gridsome + WordPress:发布内容搜索
- php - 注意未定义的变量:“字符串”(PHP)
- javascript - 在 Razor 页面中发布 JQuery/Ajax 并重定向到从 MVC 操作返回的视图(又名表单提交)
- matlab - Matlab中不定义符号变量的匿名函数的导数
- java - 根据字符串键中的标记对 JAVA Map 键进行分组
- python - Keras RNN 如何预测超过数据集
- javascript - 将完整日历中的选择事件显示到弹出窗口中
- excel - 如何在没有性能问题的情况下从 VBA 字典更新工作表?