java json yaml_Java | 将 JSON 字符串转换为 YAML 字符串

时间:2025-04-04 21:54:34

在k8s中所有的资源或者配置文件都可以用 YAML 或 JSON 定义。YAML 是一个 JSON 的超集,任何有效 JSON 文件也都是一个有效的 YAML 文件。但比起JSON,YAML 的格式更加简洁清晰,本文将介绍两种在 JAVA 中将 JSON 字符串转换为 YAML 字符串的方式。

一、使用 Jackson

添加依赖:

jackson-databind

2.6.5

jackson-dataformat-yaml

2.6.5

代码实现:

//读取 JSON 字符串

JsonNode jsonNodeTree = new ObjectMapper().readTree(jsonStr);

//转换成 YAML 字符串

String yamlStr = new YAMLMapper().writeValueAsString(jsonNodeTree);

效果展示:

---

kind: "Service"

apiVersion: "v1"

metadata:

name: "tomcat"

labels:

app: "tomcat"

spec:

ports:

- name: "tcp-8080"

protocol: "TCP"

port: 8080

selector:

app: "tomcat"

该方式会自动带上 --- 分隔符,大部分属性值也默认带上了双引号,若不想要引号,可使用下面的方式。

二、使用 snakeyaml

添加依赖:

snakeyaml

1.18

代码实现:

Yaml yaml = new Yaml();

//将 JSON 字符串转成 Map

Map map = (Map) (jsonUrl);

//转换成 YAML 字符串

String yamlStr = (map);

效果展示:

kind: Service

apiVersion: v1

metadata:

name: tomcat

labels:

app: tomcat

spec:

ports:

- name: tcp-8080

protocol: TCP

port: 8080

selector:

app: tomcat

该方式先将 JSON 字符串转通过 load 方法转成 map,再转成 YAML 格式,效果上看比第一种方式要好。

原文:/einsier/p/