# param-parser **Repository Path**: Verlif/param-parser ## Basic Information - **Project Name**: param-parser - **Description**: 参数解析器 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-01-15 - **Last Updated**: 2023-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ParamParser 参数解析器 将String转换为各类对象的小组件。 主要用于框架或是组件使用,通过向`ParamParserService`中添加自己的`ParamParser`来实现自定义的`String`转换。 ## 用途 1. 用于对未知的参数进行解析。例如在反射时进行set: ```java MySqlConfig config = new MySqlConfig(); Properties properties = new Properties(); properties.load(new FileReader("mysql.properties")); ParamParserService service = new ParamParserService(); for (Field field : MySqlConfig.class.getDeclaredFields()) { ParamParser parser = service.getParser(field.getType()); String value = properties.getProperty(field.getName()); if (value != null) { field.setAccessible(true); field.set(config, parser.parse(value)); } } ``` 2. 统一参数解析接口 目前的参数解析器中内置了: * 处理`String`的`StringParser` * 处理`Integer`与`int`的`IntegerParser` * 处理`Double`与`double`的`DoubleParser` * 处理`Boolean`与`boolean`的`BooleanParser` * 处理`Date`(允许格式 - `hh:mm:ss`、`yyyy/MM/dd`、`yyyy/MM/dd hh:mm:ss`等)的`DateParser` 3. 支持的功能 1. 字符串转对象 2. `null`值自定义处理 ## 添加依赖 1. 添加Jitpack仓库源 maven ```xml jitpack.io https://jitpack.io ``` Gradle ```text allprojects { repositories { maven { url 'https://jitpack.io' } } } ``` 2. 添加依赖 __lastVersion__ [![](https://jitpack.io/v/Verlif/param-parser.svg)](https://jitpack.io/#Verlif/param-parser) maven ```xml com.github.Verlif param-parser lastVersion ``` Gradle ```text dependencies { implementation 'com.github.Verlif:param-parser:lastVersion' } ``` 3. 使用 `ParamParserService`与`ParamParser`的使用 ```java // 获取解析服务对象 ParamParserService pps = new ParamParserService(); // 获取对应类型的解析器 ParamParser doubleParser = pps.getParser(Double.class); // 使用解析器 double d = doubleParser.parse("123"); System.out.println(d); // 结果输出 123.0 System.out.println(doubleParser.parse(null)); // 结果输出 null / 设定自定义空值处理 doubleParser.setNullValueParser(new DoubleParser.AdvanceValueParser(2)); System.out.println(doubleParser.parse(null)); // 结果输出 2.0 // 添加自定义的解析器 pps.addOrReplace(new TestParser()); ``` 自定义`ParamParser`和`NullValueParser`,这里以`BooleanParser`举例 ```java public class BooleanParser extends ParamParser { private static final char[] TRUE = new char[]{'t', 'T', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; @Override public Class[] match() { return new Class[]{Boolean.class, boolean.class}; } /** * 转换文本到boolean值 * * @param param 文本内容,不为空。
* 为true的格式有 * * @return 转换得到的boolean值。若格式不匹配则返回false。若是空字符串则返回null,交由ParamParser父类处理空值。 */ @Override public Boolean convert(String param) { if (param.length() == 0) { return null; } char c = param.charAt(0); for (char c1 : TRUE) { if (c == c1) { return true; } } return false; } /** * 空值返回true */ public final static class TrueValueParser implements NullValueParser { @Override public Boolean parserNull() { return true; } } /** * 空值返回false */ public final static class FalseValueParser implements NullValueParser { @Override public Boolean parserNull() { return false; } } } ```