If Caching is disabled, it behaves correctly and JsonConverterWithNoCacheTest runs successfully. Otherwise the test JsonConverterTest fails.
The reason is that the JsonConverter has a bug where it mangles the schema as it assigns all String fields with the same name (and similar for all Int32 fields)
This is how the schema & payload gets serialized for the Person Struct (with caching disabled):
where as when caching is enabled the same Struct gets serialized as (with caching enabled) :
As we can see all String fields became "email" and all int32 fields became "weightInKgs".