在xslt中将json映射转换为字符串



如何在xslt中解析json映射到字符串。。

这是我的xslt模板:-

<xsl:variable name="inputJosn" select="parse-json($input)"/>
<xsl:variable name="joined-array" as="map(*)*">
<xsl:for-each-group select="$inputJosn?*" group-by="?fileName">
<xsl:map>
<xsl:map-entry key="'fileName'" select="current-grouping-key()"/>
<xsl:map-entry key="'value'" select="map{'Root':array{map{'Lines': array:join(current-group()?value?*?Root?*?Lines)}}}"/>
</xsl:map>
</xsl:for-each-group>
</xsl:variable>

此处联接数组变量是映射类型。

因此,如果将一个变量传递到,解析json($joined数组(和json到xml($joind数组(函数将抛出一个错误。。

An atomic value is required for the first argument of fn:parse-json(), but the supplied type is a map type, which cannot be atomized

那么如何将映射类型转换为字符串类型。

<xsl:variable name="json-array" select="parse-json($joined-array)"/>
<xsl:variable name="json-xml" select="json-to-xml($joined-array)"/>

给定xsl:variable name="joined-array" as="map(*)*",类型是映射序列,不太清楚您想要什么类型的转换,但您可以使用例如$joined-array ! serialize(., map { 'method' : 'json', 'indent' : true() })序列化映射序列。该表达式为您提供一个字符串序列。

您的变量$joined-array包含一系列映射。如果将其转换为JSON,然后对结果调用parse-json(),则最终会得到一个映射数组。

有一种更简单的方法可以从一系列映射到一系列映射,即array{$joined-array}

但是,如果出于其他原因想要将映射序列转换为JSON字符串,则可以使用serialize()函数来实现。

相关内容

  • 没有找到相关文章

最新更新