V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guomingxing
V2EX  ›  Java

老哥们有没有什么办法把 yml 文件转为 json

  •  
  •   guomingxing · 2019-10-17 22:10:14 +08:00 · 6305 次点击
    这是一个创建于 1863 天前的主题,其中的信息可能已经有所发展或是发生改变。
    求个思路也行谢谢大佬们
    19 条回复    2019-10-24 21:13:25 +08:00
    ysc3839
        1
    ysc3839  
       2019-10-17 22:14:01 +08:00 via Android
    Python pyyaml load,然后 json dump。
    TMaize
        2
    TMaize  
       2019-10-17 22:18:05 +08:00
    guomingxing
        3
    guomingxing  
    OP
       2019-10-17 22:23:35 +08:00
    @ysc3839
    @TMaize
    让写个 JavaApi 给实现,不然我就直接拿去转了,哎。
    967182
        4
    967182  
       2019-10-17 22:24:39 +08:00
    org.yaml.snakeyaml.Yaml
    TMaize
        5
    TMaize  
       2019-10-17 22:25:12 +08:00
    @guomingxing yaml 包转 map,map 转 json
    Reficul
        6
    Reficul  
       2019-10-18 00:24:12 +08:00
    YAML 和 JSON 是不等的,YAML 是 JSON 的超集。比如:

    ···yaml
    ---
    ?
    K1: V1
    :
    K2: V2
    ···
    zhouhu
        7
    zhouhu  
       2019-10-18 01:01:48 +08:00   ❤️ 1
    https://stackoverflow.com/questions/23744216/how-do-i-convert-from-yaml-to-json-in-java
    仅供参考
    String convertYamlToJson(String yaml) {
    ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory());
    Object obj = yamlReader.readValue(yaml, Object.class);

    ObjectMapper jsonWriter = new ObjectMapper();
    return jsonWriter.writeValueAsString(obj);
    }
    mingl0280
        8
    mingl0280  
       2019-10-18 01:38:13 +08:00
    额……编程的思路的话,就直接读到内存里然后 dump 到 json 呗,或者读到硬盘里(作为数据库)然后 dump 到 json
    非编程的话,Navicat Premium 倒一下就行了
    guomingxing
        9
    guomingxing  
    OP
       2019-10-18 01:43:00 +08:00
    @zhouhu 我也搜到了这个,全网可能就搜到了这个最有用,但是学识浅薄没看懂嘿嘿。
    aitaii
        10
    aitaii  
       2019-10-18 08:07:50 +08:00 via iPhone   ❤️ 1
    yaml 转 map,map 转 json
    mamahaha
        11
    mamahaha  
       2019-10-18 08:32:48 +08:00
    正则啊
    sarie
        12
    sarie  
       2019-10-18 08:52:18 +08:00
    现在问问题都不知道自己先百度或者 google 一下么
    zhouhu
        13
    zhouhu  
       2019-10-18 13:48:26 +08:00
    @guomingxing 哪里看不懂啊
    RuzZ
        14
    RuzZ  
       2019-10-18 14:04:07 +08:00
    @zhouhu 其实这个 SnakeYAML 里面也有一些地方会比较奇怪,比如`on|On|ON|off|Off|OFF`这些,即使是 key,也会解析成 bool 值
    ztcaoll222
        15
    ztcaoll222  
       2019-10-18 15:04:05 +08:00   ❤️ 1
    parse 成类, 然后 dump
    fewok
        17
    fewok  
       2019-10-18 16:57:24 +08:00
    yml 支持很多语法啊,比如占位、随机数、逻辑判断。这些都忽略吗??
    phontomKiseKi
        18
    phontomKiseKi  
       2019-10-18 16:57:25 +08:00
    guomingxing
        19
    guomingxing  
    OP
       2019-10-24 21:13:25 +08:00
    @zhouhu 谢谢老哥,现在已经解决了。
    @sarie 我确实是搜了很多办法,然后才来问的。
    不过现在已经解决了,下面把办法粘贴一下吧,以后同样问题的希望不绕弯。
    ===================================================
    //导入 fastjson 和 snakeyaml 两个依赖包,yamlString 传一 yaml 字符串。
    public static JSONObject convertToJson(String yamlString) {
    Yaml yaml= new Yaml();
    Map<String, Object> map = (Map<String, Object>) yaml.load(yamlString);
    JSONObject jsonObject=new JSONObject(map);
    return jsonObject;
    }
    //如果想要读取外部的
    InputStream inputStream = null;
    try {
    //yamlFilePath 是你的 yaml 文件路径
    inputStream = new FileInputStream(yamlFilePath);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    ===================================================
    更多的可以去看这篇,我也是看到这个然后改了改发现是可以的。
    https://blog.csdn.net/ruxyeah/article/details/78978034
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2159 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:50 · PVG 08:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.