我将收到具有数字或字符串值两种组合的输入值。如果输入是数字,您需要将其映射到一个输出字段,如果输入是字符串映射到另一个字段。
例如,输入:
[{
"Input": "ABC123"
},
{
"Input": "12345"
}]
输出:
[{
"String": "ABC123"
},
{
"Number": "12345"
}]
您可以使用 json 过滤器来确定类型,因为它会将字符串包含在引号中,而不是数字。检查 " 字符,你会知道它是否是一个数字。也会覆盖你的边缘情况。
{% assign var1 = "1" %}
{% capture testValue %}{{ var1 | json }}{% endcapture %}
{% if testValue contains '"' %}string{% else %}number{% endif %}
Dotliquid 目前没有此功能。它是开源项目,您可以下载源代码并在 StandardFilters.cs中更改/添加新方法。然后,您可以使用它来满足您的要求。您可以根据自定义要求添加任意数量的操作。
例如在 StandardFilters.cs 中添加以下方法
public static bool IsNumeric(object o)
{
return double.TryParse(Convert.ToString(o), out double result);
}
您可以在您的液体模板中使用此方法,例如,
{% assign string = '' %}
{% assign number = '' %}
{% assign isNumber = model.Input | IsNumeric %}
{% if isNumber == true %}
{% assign number = model.Input %}
{% else %}
{% assign string = model.Input %}
{% endif %}