Open catb0t opened 5 years ago
there are two options to fix this with JSON::{XS,PP}
's allow_tags
and FREEZE
/THAW
(which are the only solution short of a new JSON parser in Sidef)
Alias FREEZE
to ABCs::Serializable.serialize
and THAW
to ABCs::Serializable.unserialize
, in the definition of Serializable
, much simpler
Add another layer of wrapping to Explicit::tag_hash
/ untag_hash
, which uses a special class TagObject { has val; has type; has subtype; -> FREEZE {} -> THAW {} }
, so that all inputs to tag_hash
/ untag_hash
are first genericised to TagObject
, which is then given to JSON::XS.allow_tags
, a solution which keeps all JSON-related implementaion details out of ABCs::Serializable
There is quite a large problem still, which is that relying on allow_tags
means the database JSON will not be standard syntax (("classname")[objects...]
)