【问题标题】:How to convert JSON to YAML in javascript如何在 JavaScript 中将 JSON 转换为 YAML
【发布时间】:2016-12-11 10:30:46
【问题描述】:

我想在 javascript 中将 json 字符串转换为 yaml 格式。我从过去两天开始尝试使用 google,但没有找到任何解决方案或库。 有适用于 java 的答案,但不适用于 javascript。

假设我有这样的 json 字符串:

{
  "json": [
    "fat and rigid"
  ],
  "yaml": [
    "skinny and flexible"
  ],
  "object": {
    "array": [
      {
        "null_value": null
      },
      {
        "boolean": true
      },
      {
        "integer": 1
      }
    ]
  }
}

转换为 yaml:

json:
  - fat and rigid
yaml:
  - skinny and flexible
object:
  array:
    - null_value:
    - boolean: true
    - integer: 1

有一个在线转换器http://www.json2yaml.com/,但是如何在javascript中转换。

【问题讨论】:

  • YAML 是 JSON 的超集:任何有效的 JSON 也是有效的 YAML;你可能不需要转换任何东西。
  • 谷歌'npm Json 到 yaml'。有六个以上的图书馆。
  • @Jacob 谢谢您,您能否将其添加为答案,以便如果有人来查看正确答案,可以从中受益或节省时间?
  • 删除了我的答案,因为它收集了很多反对票。我支持它。如果您有需要 YAML 输入的代码,而您有 JSON,则不必将 JSON 转换为 YAML。这是您不需要转换的合法案例。如果您只是想转换,因为您更喜欢语法(为什么?!)请参阅这些其他解决方案。

标签: javascript json yaml


【解决方案1】:

如果有人仍然想将 JSON 转换为 YAML,你可以使用这个 JavaScript 库: https://www.npmjs.com/package/json2yaml

【讨论】:

    【解决方案2】:

    使用“js-yaml”npm 包!那是yaml.org官方认可的。 (如果您想更加确定 && 这篇文章已经过时,请自行检查 yaml.org 以查看它推荐的包。)我最初使用 'json2yaml' 而不是在将 json(作为字符串)转换为 yaml 时出现奇怪的解析行为。

    【讨论】:

    • 您能否添加一个如何使用 js-yaml 解析的示例,我尝试使用 yaml.parse() 但它已被弃用..
    • 为每个人节省5m,并回答@omer。 json 字符串转 yaml 字符串:yaml.dump(<your object>)
    • 确保将对象传递给 dump 函数(不是字符串——在我的情况下,我必须使用 dump(JSON.parse(...))
    【解决方案3】:

    我试图将答案打包成一个 bash 脚本。

    #!/bin/bash
    #convert-json-to-yaml.sh
    
    if [[ "$1" == "" ]]; then
        echo "You must provide a json file in argument i.e. ./convert-json-to-yaml.sh your_file.json"
        exit 1
    fi
    
    jsonFile=$1
    yamlFile="$1.yaml"
    
    if [[ "$2" != "" ]]; then
        yamlFile=$2
    fi
    
    python -c 'import sys, yaml, json; yaml.safe_dump(json.load(sys.stdin), sys.stdout, default_flow_style=False)' < ${jsonFile} > ${yamlFile}
    

    【讨论】:

    • 这玩意儿,去试试
    【解决方案4】:

    你可以使用yaml NPM 包。

    const YAML = require('yaml');
    
    const jsonObject = {
        version: "1.0.0",
        dependencies: {
            yaml: "^1.10.0"
        },
        package: {
            exclude: [ ".idea/**", ".gitignore" ]
        }
    }
    
    const doc = new YAML.Document();
    doc.contents = jsonObject;
    
    console.log(doc.toString());
    

    输出

    version: 1.0.0
    dependencies:
      yaml: ^1.10.0
    package:
      exclude:
        - .idea/**
        - .gitignore
    

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 2016-08-26
      • 2019-04-18
      • 2016-02-16
      相关资源
      最近更新 更多