在Java中,可以使用第三方库来实现YAML和JSON之间的转换。以下是两种常用的方法:
- 使用Jackson库:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
// 将YAML转换为JSON
ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory());
Object yamlObject = yamlMapper.readValue(new File("input.yaml"), Object.class);
ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writeValueAsString(yamlObject);
System.out.println(json);
// 将JSON转换为YAML
Object jsonObject = jsonMapper.readValue(json, Object.class);
String yaml = yamlMapper.writeValueAsString(jsonObject);
System.out.println(yaml);
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述示例中,首先使用Jackson库的ObjectMapper
类和YAMLFactory
来读取YAML文件并将其转换为Java对象。然后,再使用ObjectMapper
将Java对象转换为JSON字符串。
- 使用SnakeYAML库:
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
try {
// 将YAML转换为JSON
String yamlContent = new String(Files.readAllBytes(Paths.get("input.yaml")));
Yaml yaml = new Yaml();
Object data = yaml.load(yamlContent);
String json = new ObjectMapper().writeValueAsString(data);
System.out.println(json);
// 将JSON转换为YAML
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Yaml newYaml = new Yaml(options);
FileWriter writer = new FileWriter("output.yaml");
newYaml.dump(new ObjectMapper().readValue(json, Object.class), writer);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上述示例中,使用SnakeYAML库的Yaml
类将YAML文件读取为Java对象,然后使用Jackson库的ObjectMapper
将Java对象转换为JSON字符串。同样,将JSON转换为YAML时,首先创建DumperOptions
以设置输出格式,然后使用SnakeYAML的Yaml
类将JSON对象写入到输出文件中。
以上是两种常用的方法,使用相应的库可以实现YAML和JSON之间的互相转换。请根据需求选择适合的方法和库进行转换操作。