【发布时间】:2014-07-07 19:05:09
【问题描述】:
我只想将一个包含 yaml 的字符串转换为另一个包含使用 Java 转换的对应 json 的字符串。
例如假设我有这个 yaml 的内容
---
paper:
uuid: 8a8cbf60-e067-11e3-8b68-0800200c9a66
name: On formally undecidable propositions of Principia Mathematica and related systems I.
author: Kurt Gödel.
tags:
- tag:
uuid: 98fb0d90-e067-11e3-8b68-0800200c9a66
name: Mathematics
- tag:
uuid: 3f25f680-e068-11e3-8b68-0800200c9a66
name: Logic
在名为 yamlDoc 的字符串中:
String yamlDoc = "---\npaper:\n uuid: 8a... etc...";
我想要一些可以将yaml字符串转换为另一个带有相应json的字符串的方法,即以下代码
String yamlDoc = "---\npaper:\n uuid: 8a... etc...";
String json = convertToJson(yamlDoc); // I want this method
System.out.println(json);
应该打印:
{
"paper": {
"uuid": "8a8cbf60-e067-11e3-8b68-0800200c9a66",
"name": "On formally undecidable propositions of Principia Mathematica and related systems I.",
"author": "Kurt Gödel."
},
"tags": [
{
"tag": {
"uuid": "98fb0d90-e067-11e3-8b68-0800200c9a66",
"name": "Mathematics"
}
},
{
"tag": {
"uuid": "3f25f680-e068-11e3-8b68-0800200c9a66",
"name": "Logic"
}
}
]
}
我想知道在这个例子中是否存在类似于 convertToJson() 方法的东西。
我尝试使用SnakeYAML 来实现这一点,所以这段代码
Yaml yaml = new Yaml();
Map<String,Object> map = (Map<String, Object>) yaml.load(yamlDoc);
构造一个包含已解析 YAML 结构的映射(使用嵌套映射)。那么如果有一个解析器可以将地图转换为json字符串,它将解决我的问题,但我也没有找到类似的东西。
我们将不胜感激。
【问题讨论】:
-
使用 POJO 将允许您使用现有库,并且可能会自动执行。否则给自己一个 YAML 解析器,手动检查它,然后手动创建转换后的 JSON。
-
您在寻找什么?阅读您的帖子,我只能看到您不想做的事情。你准备做什么?抱歉,-1 因为没有显示任何解决此问题的尝试。我看到的都是我的问题,请帮我解决。
-
我知道Jackson can read and write YAML。也许使用
new ObjectMapper(new YAMLFactory())将 YAML 读入映射结构,然后使用new ObjectMapper()编写 JSON? -
感谢superEb的建议,不知道Jackson会读YAMLs
-
肯定有一些工具可以将 YAML 转换为地图和列表。一旦如此转换,生成相应的 JSON 就很简单了。