【问题标题】:Java - Parse Yaml to JsonJava - 将 Yaml 解析为 Json
【发布时间】:2020-02-19 01:26:02
【问题描述】:

Python 和 Ruby 具有非常好的库,可以将 Yaml 文件解析为 JSON 对象。

解析器需要支持 Yaml Anchor 和 References。

输入

info: &info
  legs: 4 legs
  type: pet
dog: *info
cat: *info  

期望的输出:

{
  "info": {
    "legs": "4 legs",
    "type": "pet"
  },
  "dog": {
    "legs": "4 legs",
    "type": "pet"
  },
  "cat": {
    "legs": "4 legs",
    "type": "pet"
  }
}

我首先尝试了 Jackson YAMLFactory。该库通常不支持锚点和引用。

在 Java 中将 Yaml 解析为 JSON 对象有什么好的解决方案?

【问题讨论】:

    标签: java yaml


    【解决方案1】:

    以下解决方案似乎有效。

    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.LinkedHashMap;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    
    import org.yaml.snakeyaml.Yaml;
    
    public class YamlParser {
    
         public static void main(String[] argv) {
            File f = new File("my.yml");
            final Yaml yaml = new Yaml();
    
            try {
                final Object loadedYaml = yaml.load(new FileReader(f));
                Gson gson = new GsonBuilder().setPrettyPrinting().create();
                String json = gson.toJson(loadedYaml,LinkedHashMap.class);
    
                System.out.println(json);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    

    具有以下 maven 依赖项。

            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>1.21</version>            
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.6</version>
            </dependency>
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2016-11-05
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      相关资源
      最近更新 更多