gpt4 book ai didi

json - 如何在 Liquid json 转换中使用 foreach 和追加字符串

转载 作者:行者123 更新时间:2023-12-03 05:38:27 28 4
gpt4 key购买 nike

原始输入 json -

{
"demo" : "a12,b45,c78" ,
"status" : "1"
}

预期输出为 xml

<demo>
<Value>a12</Value>
<Value>b45</Value>
<Value>c78</Value>
</demo>
<status>done</status>

我将首先创建一个 json,然后在逻辑应用程序中使用 @xml() 将其转换为 xml,尝试如下所示,效果很好,但它硬编码了如何使用 foreach 进行动态。

{
{% if content.status == "1" %}
"status" : "done"
{% elsif content.status == "2" %}
"status" : "done"
{% endif %}
"demo": {"Value":["a12","b45","c78"]}
}

对于演示 C# 代码将类似于 -

 string a = "a12,b45,c78";

var aa = a.Split(',').ToArray();

最佳答案

对于这个需求,我们可以在逻辑应用中使用一些操作来获取 "a12,b45,c78"然后将它们拆分为数组,然后将它们从 json 转换为 xml。但我认为这个解决方案太复杂了,我们可能需要在逻辑应用程序中进行很多操作。因此,在您的逻辑应用程序中,您可以执行之前所做的操作并获得结果 <demo>a12,b45,c78</demo> 。然后使用 xslt map 将 xml 转换为您想要的格式。请引用以下步骤:

1.我执行与您在问题中提到的相同操作。 enter image description here

2.我们需要创建一个 xslt 模板,如下所示:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="demo/text()" name="tokenize">
<xsl:param name="separator" select="','"/>
<xsl:for-each select="tokenize(.,$separator)">
<Value>
<xsl:value-of select="normalize-space(.)"/>
</Value>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

3.将xslt模板保存为.xslt类型并将其上传到您的集成帐户的 map 。上传时,请选择“ map 类型”为“XSLT 2.0”。

4. 使用转换 XML 操作进行转换(选择您在上面上传的 map )。 enter image description here

5. 之后,我们就可以得到你想要的结果了。 enter image description here

更新:

您可以使用液体模板,如下所示:

{% assign arr = content.demo | Split: "," %}
{
{% if content.status == "1" %}
"status": "done",
{% else %}
"status": "undone",
{% endif %}
"demo": {
"Value":[
{% for item in arr %}
"{{item}}",
{% endfor %}
]
}
}

然后获取你想要的json数据:

{
"status": "done",
"demo": {
"Value": [
"a12",
"b45",
"c78"
]
}
}

关于json - 如何在 Liquid json 转换中使用 foreach 和追加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60551635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com