Json is overkill. Just use the Bytes utilities like this:

        WritableUtils.writeVInt(output, snapShots.size());
        for each map entry
            WritableUtils.writeString(output, key);
            WritableUtils.writeVInt(output, values.length);
            for each value
                Bytes.writeByteArray(output, value);