Casting dates to and from JSON

Hi,

So when Appian writes dates to Json, it cannot cast those values correctly if it reads them back.

load(
  local!data:{
    today()
  },
  local!jsonData: a!toJson(
    local!data
  ),
  local!fromJson: cast(
    typeof(today()),
    a!fromJson(
      local!jsonData
    )
  ),  
  a!sectionLayout(
    contents: {
      a!textField(
        value: local!jsonData
      ),
      a!textField(
        value: local!fromJson
      )
    }
  )
)

Do I have to manually alter the string in order to reorder the date from "YYYY-MM-DDZ" to "DD-MM-YYYYZ" before I run from Json?

Is there a reason that Appian designed it this way?

  Discussion posts and replies are publicly visible

Parents Reply Children
  • 0
    Certified Lead Developer
    over 4 years ago in reply to jonathanb0001

    Regex functions do come from a plugin - shared component which is cloud approved as well. 


    I checked the previous release documents and can trace back the torecord() to 17.1 the oldest supported version. But frankly speaking, don't remember when was this introduced. Seems it had always been there. Something odd with your installation.


    datetext I am assuming you want to convert the datetime to a string first - this will give you a string notation of user's local time. then while converting it back to datetime you need to honor the GMT offset. parse the string and get this offset, use local on top of it. Appian wouldn't automatically convert this from a string. Then you have to make sure consumers always pass you the string in an agreed format (that's why I thought of XML standard as Appian seems to be doing this anyway).

    And if you have this agreement in place, you don't need regex at all (as suggested in the original post :) ).
    Regex is just a check before attempting a conversion if your agreement on a format is not in place or there is a potential of this being consumed at a large scale (at the enterprise level). You don't want to rely on consumer always passing the data in the correct format. Otherwise, you can ignore the regex code and just convert it to datetime. if the data is not proper your conversion will fail.