easy-mybatis easy-mybatis
首页
  • 框架初衷与诞生
  • 介绍
  • 快速上手
  • 配置说明
  • 统一约定
  • MapperRepository
  • JsonObject
  • JsonArray
API文档 (opens new window)
💖支持
作者博客 (opens new window)
Gitee (opens new window)
GitHub (opens new window)
首页
  • 框架初衷与诞生
  • 介绍
  • 快速上手
  • 配置说明
  • 统一约定
  • MapperRepository
  • JsonObject
  • JsonArray
API文档 (opens new window)
💖支持
作者博客 (opens new window)
Gitee (opens new window)
GitHub (opens new window)
  • 主要接口

    • MapperRepository
    • JsonObject
      • 结构
      • 类型转换
        • 示例
      • 子接口:
    • JsonArray
目录

JsonObject

# 结构

top.zuoyu.mybatis.json.JsonObject为键值对容器,以键值的形式装载,数据结构为:

{
    'field1' : 'value1',
    'field2' : 'value2',
    'field3' : 'value3',
    ...
}

键的类型为java.lang.String类型,值的类型可以为任何类型。

# 类型转换

内部默认已包含常规的类型转换,默认支持以下类型:

  • java.math.BigInteger
  • java.math.BigDecimal
  • java.lang.Boolean
  • java.lang.Byte
  • java.lang.Character
  • java.util.Date
  • java.lang.Double
  • java.lang.Float
  • java.lang.Integer
  • java.lang.Long
  • java.lang.Short
  • java.lang.String

如果默认的转换器无法满足需求,或者需要转换为其他类型,可通过自定义转换器ConvertClass<T>进行实现,接口方法:

public interface ConvertClass<T> {

    /**
     * 将给定的 value 对象转换为 T 类型
     *
     * @param value - 给定对象
     * @return 目标转换类型的对象
     */
    T convert(Object value);

    /**
     * 将给定的 value 对象转换为 T 类型, 否则返回  defaultValue
     *
     * @param value        - 给定对象
     * @param defaultValue - 默认值
     * @return 目标转换类型的对象
     */
    T convert(Object value, T defaultValue);
}

# 示例

    @Test
    void convertTest() {
        // 使用JSON字符串初始化对象
        JsonObject student = new JsonObject(studentJSON);

        // 获取学生的性别,如果无法转换则返回"未知"
        String sex = student.getValue("sex", new SexConvert());

        // 获取学生的性别,如果无法转换则返回"未录入"
        String sexOrDefault = student.getValue("sex", new SexConvert(), "未录入");
    }

    static class SexConvert implements ConvertClass<String> {

        @Override
        public String convert(Object value) {
            if (value instanceof Integer) {
                if ((Integer) value == 1) {
                    return "男";
                } else if ((Integer)value == 0) {
                    return "女";
                }
            }
            return "未知";
        }

        @Override
        public String convert(Object value, String defaultValue) {
            if (value instanceof Integer) {
                if ((Integer) value == 1) {
                    return "男";
                } else if ((Integer)value == 0) {
                    return "女";
                }
            }
            return defaultValue;
        }
    }

本示例也可使用StringConvert转换器,StringConvert为ConvertClass<T>的子接口。

也可以通过toClass方法,将JsonObject对象转换为指定类型的实体类。

# 子接口:

  • BigDecimalConvert
  • BigIntegerConvert
  • BooleanConvert
  • ByteConvert
  • CharacterConvert
  • DateConvert
  • DoubleConvert
  • FloatConvert
  • IntegerConvert
  • LongConvert
  • ShortConvert
  • StringConvert

更多方法请移步JsonObject的API文档 (opens new window)。

MapperRepository
JsonArray

← MapperRepository JsonArray→

最近更新
更多文章>
Theme by Vdoing | Copyright © 2021-2022 zuoyu | MIT License | © 豫ICP备19014153号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式