如何在 Java 中将 YAML 转换为 JSON?

2024-01-05

我只想使用 Java 将一个包含 yaml 的字符串转换为另一个包含相应转换后的 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"
            }
        }
    ]
}

我想知道是否存在类似的东西转换为Json()本例中的方法。

我尝试使用以下方法实现此目的蛇YAML https://code.google.com/p/snakeyaml/,所以这段代码

 Yaml yaml = new Yaml();
 Map<String,Object> map = (Map<String, Object>) yaml.load(yamlDoc);

构造一个包含解析的 YAML 结构的映射(使用嵌套映射)。然后,如果有一个解析器可以将映射转换为 json 字符串,它将解决我的问题,但我也没有找到类似的东西。

任何回应将不胜感激。


这是使用 Jackson 的实现:

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);
}

要求:

compile('com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.7.4')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Java 中将 YAML 转换为 JSON? 的相关文章

  • Java 读取大文本文件时出现 OutOfMemoryError

    我是 Java 新手 正在读取非常大的文件 需要一些帮助来理解问题并解决它 我们有一些遗留代码 必须对其进行优化才能正常运行 文件大小仅在 10mb 到 10gb 之间变化 只有当文件开始大小超过 800mb 时才会出现启动问题 Input
  • GET 请求的 Spring 注解

    这两种spring GET方法有什么区别呢 哪一种是首选方法 Component Scope request Path public class TestComponent GET Path hello public String prin
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库
  • java中的单链表和双向链表?

    在java中 哪个集合接口可以有效地实现单链表和双向链表 请问代码示例吗 毫不奇怪 实现双向链表的正确接口是 LinkedList 看Java文档 http docs oracle com javase 8 docs api java ut
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 将现有 eclipse 项目导出到 war 文件时出现“模块名称无效”

    我正在尝试将现有 Eclipse 项目导出到 war 文件 但无论我在 WAR Export 对话框页面中输入什么 系统总是返回 模块名称无效 我不知道如何解决这个问题 谢谢您的帮助 我有同样的问题 我修复了它 请按照以下步骤操作 您可以创
  • 从 HttpClient 3 转换为 4

    我已经成功地对所有内容进行了更改 但以下内容除外 HttpClient client HttpPost method client new DefaultHttpClient method new HttpPost url InputStr
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 合并两个地图的最佳实践是什么

    如何将新地图添加到现有地图 地图具有相同的类型Map
  • 多线程——更快的方法?

    我有一堂有吸气剂的课程getInt 和一个二传手setInt 在某个领域 比如说领域 Integer Int 一个类的一个对象 比如说SomeClass The setInt 这里是同步的 getInt isn t 我正在更新的值Int来自
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • 如何将库添加到 LIBGDX 项目的依赖项 gradle

    一切都在问题中 我已经尝试了在 SO 和其他网站中找到的所有答案 但没有运气 这就是我迄今为止尝试过的 adding compile fileTree dir lib include jar 到我的 build gradle adding
  • CXF:通过 SOAP 发送对象时如何排除某些属性?

    我使用 Apache CXF 2 4 2 当我将数据库中的某个对象返回给用户时 我想排除一些属性 例如密码 我怎样才能做到这一点无需创建临时的班级 有这方面的注释吗 根据 tomasz nurkiewicz 评论我应该使用 XmlTrans
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator
  • @Embeddable 中的 @GenerateValue

    我已将实体的 id 分离到一个单独的 Embeddable 类中 该实体如下 Entity Table name users public class Users EmbeddedId private Users pk id private
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • AppCompatDelegate 无法实例化自定义视图充气器 android.support.v7.app.AppCompatViewInflater

    当获取发布 apk 时 我在应用程序的所有活动中收到此错误日志 04 03 17 10 54 105 26527 26527 I AppCompatDelegate Failed to instantiate custom view inf
  • 不超过两个重复字母/数字的正则表达式

    我需要处理 XSL 文件中不超过两个相同字母 数字的正则表达式 no space 不支持特殊字符 支持 a z A Z 0 9 需要 a z 之一 需要 0 9 之一 不超过 2 个相同的字母 数字 即BBB将失败 BB被接受 到目前为止我
  • 是否可以在 WordPress 中测试空术语或类别?

    我有一个项目 要求我列出每个自定义帖子类型的可用术语 并通过 css javascript 直观地指示哪些术语 类别为空 有没有办法返回术语 类别列表并说向空的类别添加一个类 感谢您提供的所有帮助 就在这里 首先 您使用以下方式获取条款获取
  • 如何为 springdoc swagger-ui HTML 页面配置自定义 URL?

    将 springdoc openapi ui 依赖项添加到我的 Spring 项目 不是 Spring Boot 后 将生成 OpenAPI V3 文档 并且可以使用默认的 swagger ui 页面查看 localhost 8080 sw
  • 从 std::async 返回的 std::future 在超出范围时挂起

    我正在使用以下组合std async and std future from C 11 我用来对我在代码中执行的某个活动强制执行 time outmight我尝试连接到服务器时需要一些时间 代码如下 include
  • 当我在 PHP 中使用 session_regenerate_id(true) 时,session_destroy 会带来什么附加价值?

    我一直在阅读手册和网络上的各个页面 包括这里的很多问题 然而 我仍然无法理解这个概念session destroy 在 PHP 中与其他取消设置会话数据的方法结合使用 考虑这个网站从不注册会话变量之外的 SESSION超全局数组 sessi
  • 自动从 XML 模式创建 GUI

    我必须编写一个桌面应用程序来编辑 XML 文件中存储的数据 该格式由 XML 架构文件 xsd 定义 格式相当复杂 有没有可以自动生成基本GUI的工具 目前尚未决定使用哪种语言 我有使用 wxWidgets 的 Python 和 C 以及使
  • 为什么“npm run dev”不能在新的“npx create-next-app”上工作?

    我刚刚创建了一个新的 Next 应用程序npx create next app 看起来已经成功运行了 npx create next app 8 46 31 npx installed 1 in 8 826s What is your pr
  • 使用 LINQ 逐字读取文本文件

    我正在学习 LINQ 并且想使用 LINQ 逐字阅读文本文件 比如说电子书 这就是为什么我可以想出 static void Main string content File ReadAllLines text txt var query f
  • 处理 ASP.NET MVC 中的路由错误

    我知道如何设置自己的路由 但是如何处理路由表漏洞中的路由呢 我的意思是 我猜默认 controller action id 路线可能是一个通用的包罗万象的东西 但我不确定这是否是正确的方法 我喜欢让我的用户知道他们请求的数据 页面 不存在
  • 使用 JSONPath 过滤 JSON 文档中的属性

    我有一个任意定义的 JSON 文档 并且我希望能够应用JSONPath https goessner net articles JsonPath 类似于属性白名单过滤器的表达式 所有选定的节点和他们的祖先回到根节点保留 所有其他节点都被删除
  • MIPS 中的递归函数如何工作?

    我是 MIPS 的新手 因为我开始为大学学习 MIPS 汇编 并且在理解 MIPS 中的递归函数如何工作方面遇到了问题 例如 我有这个程序 用 C 语言 可以用 MIPS 编写 int fact int n if n lt 1 return
  • C# 9.0 记录 - ToString 不继承

    考虑 the ratioale for Wrapper is that it has a Json serializer that serialize through Field not included in this example r
  • 在 cpp 文件的匿名命名空间中使用模板函数是否正确?

    我想在 cpp 文件的匿名命名空间内有一个模板函数 纯粹作为不同大小的 std array 类型的辅助函数 此函数不得在该翻译单元之外的任何地方使用 令我惊讶的是 当我在 MSVC 14 1 简化代码 中尝试时 它立即生效 namespac
  • R中which.max函数的容差是多少?

    基于我在这里讨论的一个问题 https stackoverflow com a 57364028 2725773 https stackoverflow com a 57364028 2725773我想知道的公差 精度是多少which ma
  • Redux - 管理预加载状态

    我正在构建一个应用程序 我需要预加载people and planet data 将来可能会增加更多预载要求 在启动应用程序时 我希望在代表应用程序全局状态的商店中具有价值loaded
  • WebClient 下载文件显示错误的百分比

    我正在使用一个System Net WebClient在我的应用程序中异步下载文件 由于某种原因 在某些系统上 百分比计算错误 我的 更新的 DownloadProgressChanged 事件 WebClient client new W
  • unique_ptr::get() 而不是 &* 有什么用?

    我在用着unique ptr管理一些资源以便在任何情况下都能安全销毁 等等 void do something BLOB b unique ptr
  • 在Windows服务器中使用Word对象

    我有 asp net 应用程序 它有时会获取 Word 文档 编辑其中的一些数据并将其发送到电子邮件 虽然这在我有 microsoft word 的本地计算机上运行良好 但当我尝试在没有安装 microsoft word 的 Windows
  • 如何在 Java 中将 YAML 转换为 JSON?

    我只想使用 Java 将一个包含 yaml 的字符串转换为另一个包含相应转换后的 json 的字符串 例如假设我有这个yaml的内容 paper uuid 8a8cbf60 e067 11e3 8b68 0800200c9a66 name