yaml配置文件转换成JSON

目录

1.1Yaml配置文件读取

1.2加载yaml文件

1.3工具类

1.4writeValue使用

1.5map遍历工具


1.1Yaml配置文件读取

依赖导入:
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.9.8</version>
</dependency>


1.2加载yaml文件

 public static WeworkConfig load(String path) {
        // fixed: read from yaml or json
        ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
        try {
            WeworkConfig weworkConfig = mapper.readValue(WeworkConfig.class.getResourceAsStream(path),WeworkConfig.class);
            return weworkConfig;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }


备注:
yaml文件位置:src/main/resources/conf/WeworkConfig.yamlWeworkConfig.yam

-----
agentId: "1000005"
secret: "1JPyY9GvPLZfpvxEDjok-Xt_9v7HIBYJhZUoO6EgNGY"
corpid: "wwd6da61649bd66fea"
contactSecret: "C7uGOrNyxWWzwBsUyWEbLQdOqoWPz4hNvxj9RIFv-4U"
current: dev
env:
  dev:
    "qyapi.weixin.qq.com": "qyapi.weixin.qq.com"
  test:
    "qyapi.weixin.qq.com": "140.207.127.79"

--------’

单例模式:

private static WeworkConfig weworkConfig;
public static WeworkConfig getInstance(){
	if(weworkConfig==null){
	weworkConfig=load("/conf/WeworkConfig.yaml");
	System.out.println(weworkConfig);
	System.out.println(weworkConfig.agentId);
	}
	return weworkConfig;
}

这里介绍下writeValue和writeValueAsString   将读取的yaml转换成json写进文本

1.3工具类

public static  void writeAsString() {
    ObjectMapper mapper = new ObjectMapper();
    WeworkConfig weworkConfig = WeworkConfig.getInstance();
    BufferedWriter writer = null;
    FileWriter fw=null;
    try {
        System.out.println(mapper.writeValueAsString(weworkConfig));
        File file = new File("src/main/resources/weworkconfig.txt");
        if (!file.exists()) {
            file.createNewFile();
        }
//             String jsonData = JSON.toJSONString(weworkConfig);
        String jsonData=mapper.writeValueAsString(weworkConfig);
        Map<String, Object> map = new LinkedHashMap<String, Object>();
        map = mapper.readValue(jsonData, Map.class);
        JSONObject jbJsonObject = new JSONObject(map);
        String jsonObject = JSON.toJSONString(jbJsonObject, SerializerFeature.PrettyFormat);
        fw = new FileWriter(file);
        writer = new BufferedWriter(fw);
        writer.write(jsonObject);
        writer.flush();

    } catch (JsonProcessingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (writer != null ||fw!=null) {
            try {
                writer.close();
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

上面代码使用到了JSONUtil工具,将object转json,json转map,并在将jsonObject转json时使用SerializerFeature.PrettyFormat
可以将json子符传序列化,并使用BufferedWriter字符输出流输出,最终输出到文本的是整齐的json字符串,如下:
weworkconfig.txt文件

{
    "agentId":"1000005",
    "current":"dev",
    "contactSecret":"C7uGOrNyxWWzwBsUyWEbLQdOqoWPz4hNvxj9RIFv-4U",
    "corpid":"wwd6da61649bd66fea",
    "secret":"1JPyY9GvPLZfpvxEDjok-Xt_9v7HIBYJhZUoO6EgNGY",
    "env":{
        "dev":{
            "qyapi.weixin.qq.com":"qyapi.weixin.qq.com"
        },
        "test":{
            "qyapi.weixin.qq.com":"140.207.127.79"
        }
    }
}


1.4writeValue使用

  public static void writeVlueFIle() {
         ObjectMapper mapper = new ObjectMapper();
         WeworkConfig weworkConfig = WeworkConfig.getInstance();
         File file = new File("src/main/resources/weworkconfig.txt");
         try {
            if (!file.exists()) {
                 file.createNewFile();
             }
            mapper.writeValue(file, weworkConfig);
        } catch (IOException e) {
            e.printStackTrace();
        }
     }
    
 public static void writeVlueOutput() {
         ObjectMapper mapper = new ObjectMapper();
         WeworkConfig weworkConfig = WeworkConfig.getInstance();
         File file = new File("src/main/resources/weworkconfig.txt");
         OutputStream outputStream=null;
         try {
            if (!file.exists()) {
                 file.createNewFile();
             }
             outputStream=new FileOutputStream(file);
             mapper.writeValue(outputStream, weworkConfig);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (outputStream!=null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
     }
    

 public static void writeVlueFileWrite() {
         ObjectMapper mapper = new ObjectMapper();
         WeworkConfig weworkConfig = WeworkConfig.getInstance();
         File file = new File("src/main/resources/weworkconfig.txt");
         FileWriter fileWriter=null;
         try {
            if (!file.exists()) {
                 file.createNewFile();
              }
              fileWriter=new FileWriter(file);
             mapper.writeValue(fileWriter, weworkConfig);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileWriter!=null) {
                try {
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
     }

1.5map遍历工具

这里写一个map读取遍历方法:

public void MapRead(Map<String, Object> map) {
    /*  Set<Entry<String, Object>> entrys =map.entrySet();
    for (Entry<String, HashMap<String, String>> entry : entrys) {
        System.err.println("key:" + entry.getKey() + "   value:" + entry.getValue());
    }*/
    Set<Entry<String, Object>> entrys = map.entrySet();
    for (Iterator iterator = entrys.iterator(); iterator.hasNext();) {
        Entry<String, HashMap<String, String>> entry = (Entry<String, HashMap<String, String>>) iterator.next();
        String key = entry.getKey();
        Object value = map.get(key);
        System.err.println("key:" + key + "   value:" + value);
    }
}


上面的map可以直接使用jsonUtil工具将map装jsonObject对象
jsonutil工具类地址:JSONUtil工具类

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值