@Override
    public boolean visitObject(Map<?, ?> map) {
        print('{');

        boolean first = true;
        for (Map.Entry<?, ?> entry : map.entrySet()) {
            if (ignoreNull && entry.getValue() == null) {
                continue;
            }

            if (!first) {
                print(',');
            }

            acceptEntry(entry);

            first = false;
        }
        print('}');

        return false;
    }