如何在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()
函数来实现。