requires JSON::MaybeXS