0

我将收到具有数字或字符串值两种组合的输入值。如果输入是数字,您需要将其映射到一个输出字段,如果输入是字符串映射到另一个字段。

例如,输入:

[{
"Input": "ABC123"
 },
 {
  "Input": "12345"
  }]

输出:

[{
 "String": "ABC123"
 },
 {
 "Number": "12345"
 }]
4

2 回答 2

0

您可以使用 json 过滤器来确定类型,因为它会将字符串包含在引号中,而不是数字。检查 " 字符,你会知道它是否是一个数字。也会覆盖你的边缘情况。

{% assign var1 = "1" %}
{% capture testValue %}{{ var1 | json }}{% endcapture %}
{% if testValue contains '"' %}string{% else %}number{% endif %}
于 2019-10-31T10:31:44.670 回答
0

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 %}
于 2019-12-09T04:49:36.207 回答