All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jeesuite.kafka.serializer.JsonMessageSerializer Maven / Gradle / Ivy

The newest version!
package com.jeesuite.kafka.serializer;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.Map;

import org.apache.kafka.common.errors.SerializationException;
import org.apache.kafka.common.serialization.Serializer;

import com.jeesuite.common.json.JsonUtils;


/**
 * 
 * @description 
* @author vakin * @date 2018年3月11日 */ public class JsonMessageSerializer implements Serializer { /** * Configure this class. * * @param configs configs in key/value pairs * @param isKey whether is for key or value */ @Override public void configure(Map configs, boolean isKey) { } /** * serialize * * @param topic topic associated with data * @param data typed data * @return serialized bytes */ @Override public byte[] serialize(String topic, Serializable data) { try { if (data == null) return null; else{ String toString = isSimpleDataType(data) ? data.toString() : JsonUtils.toJson(data); return toString.getBytes(StandardCharsets.UTF_8.name()); } } catch (UnsupportedEncodingException e) { throw new SerializationException("Error when serializing string to byte[] due to unsupported encoding UTF-8"); } } /** * Close this serializer */ @Override public void close() { } private static boolean isSimpleDataType(Object o) { Class clazz = o.getClass(); return ( clazz.equals(String.class) || clazz.equals(Integer.class)|| clazz.equals(Byte.class) || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class) || clazz.equals(Short.class) || clazz.equals(BigDecimal.class) || clazz.equals(Boolean.class) || clazz.isPrimitive() ); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy