Daml-LF JSON encoding

Daml-LF values are represented as JSON values in the JSON Ledger API. This representation is used whenever the JSON Ledger API expects a Daml record or value, such as in the createArguments field of the CreateCommand component. The conversion from Daml values to JSON also occurs when a value is returned from the JSON Ledger API. For more information about Daml types, see Built-in Types.

Daml LF JSON encoding

Daml LF type

JSON Type

Example

Int

string (number accepted as input) [1]
range [-9223372036854775808, 9223372036854775807]

1234567890

Decimal

string (number accepted as input) [1]
range: [–(10³⁸–1)÷10¹⁰,(10³⁸–1)÷10¹⁰]
format: -?[0-9]{1,28}(\.[0-9]{1,10})?

“1234.56”

Timestamp

string ISO 8601 timestamp(yyyy-mm-ddThh:mm:ss.ssssssZ) [2]

“2023-04-06T04:30:23.1234569Z”

Date

string ISO 8601 date (yyyy-mm-dd)

“2023-04-06”

Unit

{} empty JSON Object

{}

Text

string

“my text value”

Bool

boolean

false

ContractId

string

“1234:56:7890”

Party

string

“Alice:1234567890”

Record

JSON object
{"prop1":val1, ..., "propN":valV}

{
    "field1Label":{ /*value of field1*/},
    "field2Label": { /*value of field2*/},
    /*...*/
}

List

JSON array

[1,7,3,4,5]

TextMap

JSON object
{"key1":"val1", ..., "keyn":"valn"}

{"key1":"value1", "key2":"value2"}

Variant

{
 "tag": "<constructor_name>",
 "value": "<variant_value>"
}
data Location
  = InHand
  ; InAccount Account
    deriving (Eq, Show)
{
 "tag": "InAccount",
     "value": {
         "number": "CH-1234567890",
         "bank": { }
     }
}

Optional

JSON value when defined or null when empty

null

Enum

string enum value name

Red (for Daml data Color = Red | Green | Blue)

Footnotes