JsonRelease Notes


Re-written to be simplier, yet even more powerful!


  • New: URIs are converted via Uri.encode() and Uri.decode().
  • New: JsonConverters option encodeDecodeUris to turn off the new URI behaviour.
  • New: Errs thrown during conversion are re-thrown with a stack of conversion context.


  • New: PickleMode to serialise all fields of an class, except for @Transient fields.
  • New: Conversion option doNotWriteNulls for omitting null values when writing object properties.
  • Chg: Docs no longer cause warnings in SkySpark and FinStack.
  • Chg: Exposed JsonConvertersCtx.converters.
  • Chg: Removed the afJson. prefix for converter option keys.
  • Chg: JsonWriter.writeJsonToStream() now returns the given OutStream.


  • New: toJsonArray() and fromJsonArray() in JsonConverters.
  • New: Added escapeUnicode option to JsonWriter to disable Unicode escaping.
  • Chg: JsonConverters.toJsonVal() now has a default fantomType param.
  • Chg: Converting from JSON to Obj now allows objs (e.g. Maps) to pass though.
  • Bug: Json.prettyPrint() didn't do pretty unless true was passed as an option.


  • New: JsonConverters.normaliseKeyNamesFn() now also normalises snake_case names.
  • Chg: Deprecated JsonConverters.normaliseDotNetKeyNames in favour of the more generic normaliseKeyNamesFn.


  • New: Support for dynamic typing via _type fields.



  • New: serializableMode for when you just want to pickle your objects - see this Fantom defect for details.
  • Chg: JsonConverterCtx is now passed to JsonPropertyCache to give more context to subclasses.
  • Chg: Allow null fantomType in JsonConverter methods, for convenience.
  • Bug: Maps and Lists could not be de-serialised into const fields (in non-const objects).
  • Bug: to/fromJson() methods would only convert Maps / JSON Objects.


  • New: Bespoke converters for Date and DateTime with customisable locale formatting.
  • Chg: Made JsonPropertyData more extensible.
  • Chg: Optimised some conversion code.


  • New: Re-written.
  • New: Now a SkySpark extension.



  • Chg: Simplified List / Map -> toFantom conversion.
  • Chg: Converted lists and maps are always duplicated, even if they require no conversion
  • Bug: PrettyPrintOptions.toStr() printed wrong maxWidth.


  • Chg: Added fieldVals parameter to ObjConverter.surplusJson(...)


  • New: Methods may also be annotated with @JsonProperty.
  • New: JsonWriter now pretty prints!
  • Chg: Renamed everything! Well, pretty much all of the main methods. (Breaking change.)
  • Chg: Added lots of hooks to ObjInspector.
  • Chg: Made more inspectors and converters public, but they're all @NoDoc for now.
  • Chg: Fields declared as Obj may capture any obj.
  • Bug: Numbers weren't converted to their correct sub-type.


  • New: Initial release.