properties数据处理
Posted wd404
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了properties数据处理相关的知识,希望对你有一定的参考价值。
1、介绍
1.1 数据结构
properties数据指的是一组或多组键值对数据结构,list[list[str, str]]。
二维数组结构,其中一维的元素是长度为2的list,二维的元素是str类型,分别表示键和值。
1.2 场景
在诸多业务场景中,存在使用properties数据的需求。
- 配置文件
- 请求和响应头部
- url的直接参数
- 请求体部
- cookies
1.3 函数和类
为了方便处理properties数据,定义相关的函数和类。之所以不直接使用list或dict进行处理,大概以下几点:
- dict要求键是不可重复的,会自动去重。但是类似响应头部set-cookie字段是需要允许键重复的
- list的copy是浅复制,但需求一般是深复制。所以需要定义函数和方法
- dict和list都不强调元素是str类型,而properties函数和类都强调键和值都为str类型
- 编写函数和类,能够显著的节俭代码,进行复用
2、PropertiesModule
定义了相关的函数
2.1 parse
parse(s, sep1, sep2, strip_flag=False)->list[list[str, str]]
- 解析字符串为properties数据结构,即二维list,其中一维的元素是长度为2、元素为str的list
- s,str类型,待解析字符串
- sep1,str类型,键值对和键值对之间的分隔符
- sep2,str类型,键和值之间的分隔符
- strip_flag,bool类型,为True表示会对键和值进行去除首尾空白字符,即调用.strip()方法
- 如果s、sep1、sep2任一者为空字符串,则直接返回空list []
2.2 toString
toString(arr, sep1, sep2)->str
- 将properties数据结构,组装为str类型返回。如果arr长度为0,返回空字符串\'\'
- arr,为properties数据结构,即二维list,其中一维的元素是长度为2、元素为str的list
- sep1,str类型,键值对和键值对之间的分隔符
- sep2,str类型,键和值之间的分隔符
2.3 clone
clone(arr) -> list[list[str, str]]
- 深克隆,即克隆二维的str字面值。而非浅克隆只克隆一维的地址
- arr,为properties数据结构,即二维list,其中一维的元素是长度为2、元素为str的list
2.4 hasName
hasName(arr, name, ignore_case) -> bool
- 判断properties数据结构中是否包含某键,包含则返回bool类型的True
- arr,为properties数据结构,即二维list,其中一维的元素是长度为2、元素为str的list
- name,str类型,待匹配键名称
- ignore_case,bool类型,是否忽略大小写进行匹配。如果为True,会将各键转小写,以及name转小写进行匹配
2.5 getFirstValue
"""getFirstValue(arr, name, ignore_case) -> str/None"""
"""remove(arr, name, ignore_case)"""
update(arr: list, name: str, value: str, ignore_case: bool):
add(arr: list, name: str, value: str):
"""getNames(arr) -> list"""
3、PropertiesClasses
工程中properties文件处理方法类
功能:properties文件加载、取得key对应的值
1 import java.util.ResourceBundle; 2 3 /** 4 * 工程中properties文件处理方法类 5 */ 6 public class ConfigHolder { 7 private static ResourceBundle bundle; 8 9 /** 10 * 加载properties文件 11 */ 12 private static void loadConfig() { 13 if(bundle == null) { 14 // 在class下有config.properties文件,如果在某包下,则如:ort.config 15 bundle = ResourceBundle.getBundle("config"); 16 } 17 } 18 19 /** 20 * 取得properties文件中指定key的值 21 * @param key 22 * @return 23 */ 24 public static String getValue(String key) { 25 loadConfig(); 26 return bundle.getString(key); 27 } 28 }
以上是关于properties数据处理的主要内容,如果未能解决你的问题,请参考以下文章