DEV Community

Leonard Soetedjo
Leonard Soetedjo

Posted on

Liquid template in Logic App

I was testing out Shopify liquid template to perform XML to XML/JSON data transformation. Liquid template is one of the templating tool mentioned in Microsoft's website to perform data transformation in Logic App (the other tool being the venerable XSLT).

I've not used XSLT before, but comparing to liquid template, the latter seems more friendly. As such, I embarked on using liquid template for my research.

Below are the 2 observations I found, and the workaround I need to do to fulfill the task on hand.

  1. Syntax differences between liquid and dotliquid (used by Microsoft):
    a. Capitalisation of first letter, i.e. Append instead of append.
    b. Different naming, i.e. DividedBy instead of divided_by

    The problem for syntax differences is that there's no error. The script just run successfully, but the filter functions are not executed 🙄.

  2. Unable to differentiate single child node vs. list of child nodes. To give an example, below are 2 valid snippets that can be interpreted differently.

    Snippet 1

    <order>
        <orderItem>
            <itemName>Item 1</itemName>
        </orderItem>
    </order>
    

    Snippet 2

    <order>
        <orderItem>
            <itemName>Item 1</itemName>
        </orderItem>
        <orderItem>
            <itemName>Item 2</itemName>
        </orderItem>
    </order>
    

    The first snippet interprets order as an object containing orderItem. On the other hand, the second snippet interprets order as an _array _of `orderItem 😅

    Fortunately, Microsoft has JSONArrayFor. Using JSONArrayFor instead of For loop, we're able to force order to be treated as an array regardless of the number of orderItem insider order.

Top comments (0)