繁体   English   中英

Java - 将 Yaml 解析为 Json

[英]Java - Parse Yaml to Json

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 对象的好方法是什么?

以下解决方案似乎有效。

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM