起因
接到一个查询、导出用户账号映射另一个平台用户名密码的工作。
初看之下不适合写程序实现,因为是临时且唯一的任务,界定一个任务适不适合编写一个程序去实现取决到两点:
- 是否是重复任务
- 编程实现耗时是否大于手动处理耗时
如果是重复任务尽量使用程序实现,一劳永逸,但如果手动实现很简单程序实现很复杂,那就得考虑一下是否值得去做了,而如果是临时任务,只用一次,那基本上就是手动操作就可以,但是其中的某些环节可以做一些工具那就去做。我这次的任务就是如此。
需求
其中一步是从查询的json数据中提取出用户名并统一配置映射的用户名密码,数据格式为:
{
"ok":true,
"data":{
"page":0,
"size":30,
"content":[
{
"id":1,
"user":{
"username":"测试1",
"phone":"11111111111"
},
"createDate":"2020-12-23"
},
...
]
}
}
要在这段json数据中提取出username 并按格式输出就可以了,这时候就可以考虑使用工具实现,实现方法有很多,我用js实现了一个,带界面的操作起来方便一点,如图:
- 输入原始json
- 定义提取规则(以"/"作为路径分隔,数组使用“*”)
- 定义输出模板(提取的内容以变量“$xx”代替)
- 点击处理并复制,在输出内容里就是处理后的数据,并且已复制
实现
- 把输入json字符串的转为json对象
- 根据规则循环解析,这里用递归实现了循环,对规中的“*”做了特殊处理
- 取到规则的结尾把内容替换掉模板中的“$xx”,记录到输出中
- 最后把所有内容输出并使用js代码实现选中-复制。
代码太长就不放了,放一个工具的链接,有需要的去查看源码就行了。
在线json处理小工具