XSLT代码输出含多余转义字符,如何获取预期JSON数组格式?
解决方案
问题根源
你的原代码用<users>元素包裹了数组内容,后续的JSON序列化过程会把这个元素的文本内容当作字符串值处理,因此整个数组被双引号包裹,内部的引号也被自动转义,导致输出不符合预期。
直接修改现有代码(通用XSLT版本)
去掉<users>元素的包裹,直接输出JSON的键值对结构:
<xsl:text>"users": [</xsl:text> <xsl:for-each select="ds:user_id"> <xsl:if test="position() != 1"> <xsl:text>,</xsl:text> </xsl:if> <xsl:text>"</xsl:text> <xsl:value-of select="."/> <xsl:text>"</xsl:text> </xsl:for-each> <xsl:text>]</xsl:text>
更规范的XSLT 3.0实现
如果你的环境支持XSLT 3.0,推荐使用内置的JSON生成功能,避免手动拼接字符串的繁琐和潜在错误:
<xsl:output method="json" indent="yes"/> <xsl:template match="/"> <xsl:map> <!-- 将user_id节点序列转为JSON数组 --> <xsl:map-entry key="'users'" select="array{ds:user_id/string(.)}"/> </xsl:map> </xsl:template>
这种方式会自动处理JSON的格式规范,包括引号、逗号分隔等,无需手动控制细节。
内容的提问来源于stack exchange,提问作者jaxij
相关产品推荐
相关产品推荐

