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

cn.zhxu.data.DataConvertor Maven / Gradle / Ivy

The newest version!
package cn.zhxu.data;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.lang.reflect.Type;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.List;

/**
 * 数据转换器
 * @since 2.5.2
 */
public interface DataConvertor {

    /**
     * 解析 Mapper
     * @param in JSON/XML 输入流
     * @param charset 编码格式
     * @return Mapper
     */
    Mapper toMapper(InputStream in, Charset charset);

    /**
     * 解析 Mapper
     * @param in JSON/XML 字符串(如果是 JSONB,则传 Base64后的字符串)
     * @return Mapper
     * @since v1.2.0
     * @throws IllegalArgumentException 解析 JSONB 时,if {@code in} is not in valid Base64 scheme
     */
    default Mapper toMapper(String in) {
        return toMapper(new ByteArrayInputStream(in.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
    }

    /**
     * 解析 Array
     * @param in JSON/XML 输入流
     * @param charset 编码格式
     * @return Array
     */
    Array toArray(InputStream in, Charset charset);

    /**
     * 解析 Array
     * @param in JSON/XML 字符串(如果是 JSONB,则传 Base64后的字符串)
     * @return Array
     * @since v1.2.0
     * @throws IllegalArgumentException 解析 JSONB 时,if {@code in} is not in valid Base64 scheme
     */
    default Array toArray(String in) {
        return toArray(new ByteArrayInputStream(in.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
    }

    /**
     * 将 Java 对象序列化为字节数组
     * @param object Java 对象
     * @param charset 编码格式
     * @return 字节数组
     */
    default byte[] serialize(Object object, Charset charset) {
        return serialize(object, charset, false);
    }

    /**
     * 将 Java 对象序列化为字节数组
     * @param object Java 对象
     * @param charset 编码格式
     * @param pretty 格式化输出
     * @return 字节数组
     * @since v1.6.0
     */
    byte[] serialize(Object object, Charset charset, boolean pretty);

    /**
     * 将 Java 对象序列化为字符串
     * @param object Java 对象
     * @return 字符串
     * @since v1.2.0
     */
    default String serialize(Object object) {
        return serialize(object, false);
    }

    /**
     * 将 Java 对象序列化为字符串
     * @param object Java 对象
     * @param pretty 格式化输出
     * @return 字符串
     * @since v1.6.0
     */
    default String serialize(Object object, boolean pretty) {
        return new String(serialize(object, StandardCharsets.UTF_8, pretty), StandardCharsets.UTF_8);
    }

    /**
     * 解析 Java Bean
     * @param  目标泛型
     * @param type 目标类型
     * @param in JSON/XML 输入流
     * @param charset 编码格式
     * @return Java Bean
     */
     T toBean(Type type, InputStream in, Charset charset);

    /**
     * 解析 Java Bean
     * @param  目标泛型
     * @param type 目标类型
     * @param in JSON/XML 字符串(如果是 JSONB,则传 Base64后的字符串)
     * @return Java Bean
     * @throws IllegalArgumentException 解析 JSONB 时,if {@code in} is not in valid Base64 scheme
     * @since v1.2.0
     */
    default  T toBean(Type type, String in) {
        return toBean(type, new ByteArrayInputStream(in.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
    }

    /**
     * 解析为 Java List
     * @param  目标泛型
     * @param type 目标类型
     * @param in JSON/XML 输入流
     * @param charset 编码格式
     * @return Java List
     */
     List toList(Class type, InputStream in, Charset charset);

    /**
     * 解析为 Java List
     * @param  目标泛型
     * @param type 目标类型
     * @param in JSON/XML 输入流(如果是 JSONB,则传 Base64后的字符串)
     * @return Java List
     * @throws IllegalArgumentException 解析 JSONB 时,if {@code in} is not in valid Base64 scheme
     * @since v1.2.0
     */
    default  List toList(Class type, String in) {
        return toList(type, new ByteArrayInputStream(in.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy