简体   繁体   English

将 JSON 转换为 YAML。 将 JSON 解析为 YAML

[英]Convert JSON to YAML. Parsing JSON to YAML

I'm working with configuration files so I need to convert JSON to YAML.我正在处理配置文件,所以我需要将 JSON 转换为 YAML。 For example I have this JSON file:例如我有这个 JSON 文件:

{
  "foo": "bar",
  "baz": [ "qux","quxx"],
  "corge": null,
  "grault": 1,
  "garply": true,
  "waldo": "false",
  "fred": "undefined",
  "emptyArray": [],
  "emptyObject": {},
  "emptyString": ""
}

The result should be YAML:结果应该是 YAML:

foo: "bar"
baz: 
  - "qux"
  - "quxx"
corge: null
grault: 1
garply: true
waldo: "false"
fred: "undefined"
emptyArray: []
emptyObject: {}
emptyString: ""

Could you help me?你可以帮帮我吗?

You can convert JSON to YAML with two lines of code in Jackson :您可以使用Jackson 中的两行代码将 JSON 转换为 YAML:

import java.io.IOException;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;

public class Library {

    public String asYaml(String jsonString) throws JsonProcessingException, IOException {
        // parse JSON
        JsonNode jsonNodeTree = new ObjectMapper().readTree(jsonString);
        // save it as YAML
        String jsonAsYaml = new YAMLMapper().writeValueAsString(jsonNodeTree);
        return jsonAsYaml;
    }

}

You will need to add dependencies to Jackson Core, DataBind and DataFormat YAML.您需要向 Jackson Core、DataBind 和 DataFormat YAML 添加依赖项。 Below is a snippet for Gradle:下面是 Gradle 的一个片段:

compile 'com.fasterxml.jackson.core:jackson-core:2.8.6'
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.6'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.8.6'

Here's a one liner for a file, suitable for sticking in a bash script.这是一个文件的单行代码,适合粘贴在 bash 脚本中。 This should work on most default pythons on most systems:这应该适用于大多数系统上的大多数默认 python:

python -c 'import json; import yaml; print(yaml.dump(json.load(open("inputfile"))))'

http://jsontoyaml.com/ http://jsontoyaml.com/

this website may can help you.这个网站可以帮到你。 It can be used in Bash, JavaScript, JavaScript (browser only), Ruby, Python, Perl, Java..它可以在 Bash、JavaScript、JavaScript(仅限浏览器)、Ruby、Python、Perl、Java 中使用。

I'd suggest you consider Data Transformer (disclaimer - I'm its developer).我建议您考虑使用Data Transformer (免责声明 - 我是它的开发人员)。 It converts between JSON, YML, and other formats.它可以在 JSON、YML 和其他格式之间进行转换。

You can get it from the Mac App Store or theMicrosoft Store .您可以从Mac App StoreMicrosoft Store获取它。

function yaml_validate {
  python -c 'import sys, yaml, json; yaml.safe_load(sys.stdin.read())'
}

function yaml2json {
  python -c 'import sys, yaml, json; print(json.dumps(yaml.safe_load(sys.stdin.read())))'
}

function yaml2json_pretty {
  python -c 'import sys, yaml, json; print(json.dumps(yaml.safe_load(sys.stdin.read()), indent=2, sort_keys=False))'
}

function json_validate {
  python -c 'import sys, yaml, json; json.loads(sys.stdin.read())'
}

function json2yaml {
  python -c 'import sys, yaml, json; print(yaml.dump(json.loads(sys.stdin.read())))'
}

More Bash tricks at http://github.com/frgomes/bash-scripts更多 Bash 技巧,请访问http://github.com/frgomes/bash-scripts

If you need convert JSONobject to yaml (string).如果您需要将 JSONobject 转换为 yaml(字符串)。 you need.你需要。 Firstly get json string, then map, after that you can convert to yaml.首先获取json字符串,然后映射,然后您可以转换为yaml。 Here the code:这里的代码:

  // this is your json object
  JSONObject jsonobject = new JSONObject(map);
  // get json string
  String prettyJSONString = jsonobject.toString(4);
  // mapping
  Map<String,Object> map = (Map<String, Object>) yaml.load(prettyJSONString);
  // convert to yaml string (yaml formatted string)
  String output = yaml.dump(map2);

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

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