在微服务开发过程中可能会有这样的应用场景:
- 前端用yaml进行配置
前端为何用yaml?因为yaml格式的数据可读性很高
- 但前端给后端发送数据时需json格式
为何不用yaml而用json传输?因为json是HTTP头支持的数据格式,能够保持数据结构和数据一致性,发送到后端便于解析。
- 后端接收到json数据时需转properties键值对形式存入关系型数据库。
为何需要将json转properties存入关系型数据库?这是关系型数据库要求的。
根据以上应用场景的需求,数据格式转换可总结为:
yaml → json → properties
像yaml和json的互转前端已经有很多插件完成,如node中的js-yaml.js
。
本文实现JSON
转properties
- 第一步:pom中引入依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.59</version>
</dependency>
- 第二步:实现
JSON
转properties
的类HandleString.java
:
package com.hilbp.tools;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
public class HandleString {
public Map<String, Object> test_json2prop(JSONObject jsonObject){
String tmp_key = "";
String tmp_key_pre = "";
Map<String, Object> tmp_config = new HashMap<String, Object>();
this.json2prop(jsonObject, tmp_key, tmp_key_pre, tmp_config);
System.out.println("in [HandleString] result:" + tmp_config.toString());
return tmp_config;
}
public int json2prop(JSONObject jsonObject, String tmp_key, String tmp_key_pre, Map<String, Object> tmp_config){
Iterator<String> it = jsonObject.keySet().iterator();
while(it.hasNext()){
// 获得key
String key = it.next();
String value = jsonObject.getString(key);
try {
JSONObject jsonStr = JSONObject.parseObject(value);
tmp_key_pre = tmp_key;
tmp_key += key +".";
this.json2prop(jsonStr, tmp_key, tmp_key_pre, tmp_config);
tmp_key = tmp_key_pre;
} catch (Exception e) {
tmp_config.put(tmp_key + key, value);
System.out.println(tmp_key + key + "=" + value);
continue;
}
}
return 0;
}
}
方法
json2prop
实现了具体的转换逻辑,采用递归实现
方法test_json2prop
实现了外部调用,使用时传入JSONObject
类型数据调用此方法即可,最后以map
返回键值对数据,然后将数据写入数据库即可。
网友评论