deserializeCustomFields(type, obj) {
		switch (type) {
			case P.PACKET_INFO: {
				obj.services = JSON.parse(obj.services);
				if (obj.config) obj.config = JSON.parse(obj.config);
				if (obj.metadata) obj.metadata = JSON.parse(obj.metadata);
				break;
			}
			case P.PACKET_EVENT: {
				this.convertDataFromTransport(obj, "data", "dataType");
				obj.meta = JSON.parse(obj.meta);
				break;
			}
			case P.PACKET_REQUEST: {
				this.convertDataFromTransport(obj, "params", "paramsType");
				obj.meta = JSON.parse(obj.meta);
				break;
			}
			case P.PACKET_RESPONSE: {
				this.convertDataFromTransport(obj, "data", "dataType");
				obj.meta = JSON.parse(obj.meta);
				if (obj.error) obj.error = JSON.parse(obj.error);
				break;
			}
			case P.PACKET_GOSSIP_REQ: {
				if (obj.online) obj.online = JSON.parse(obj.online);
				if (obj.offline) obj.offline = JSON.parse(obj.offline);
				break;
			}
			case P.PACKET_GOSSIP_RES: {
				if (obj.online) obj.online = JSON.parse(obj.online);
				if (obj.offline) obj.offline = JSON.parse(obj.offline);
				break;
			}
		}

		return obj;
	}
Deserialize custom fields

@param {String} type
@param {Packet} obj
@returns {Packet}
@memberof Serializer