# Empty Object

{ }

==>

JsoncText(Object)

# One Property

{
  "foo": 123
}

==>

JsoncText(Object(Property(PropertyName,Number)))

# Multiple Properties

{
  "foo": 123,
  "bar": "I'm a bar!",
  "obj": {},
  "arr": [1, 2, 3]
}

==>

JsoncText(Object(
  Property(PropertyName,Number),
  Property(PropertyName,String),
  Property(PropertyName,Object),
  Property(PropertyName,Array(Number,Number,Number))))

# Trailing Commas

{
  "obj": {"key": 1,},
  "arr": [1, 2, 3,],
}

==>

JsoncText(Object(
  Property(PropertyName,Object(
    Property(PropertyName, Number)
  )),
  Property(PropertyName,Array(Number,Number,Number))))
