json2yaml 3.0.1

dotnet tool install --global json2yaml --version 3.0.1
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local json2yaml --version 3.0.1
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=json2yaml&version=3.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
nuke :add-package json2yaml --version 3.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.


A simple tool to convert json to yaml.

json2yaml converter reads json input (from file, url endpoint or stdin) and produces converted yaml output (to file or stdout).


dotnet tool install --global json2yaml

By default .NET will choose which runtime to target.

You can use specific framework version if you want to run tool on different runtime:

dotnet tool install json2yaml --global --framework netcoreapp3.1


Usage: json2yaml [options]

  -i|--input                 Path to json input file. E.g. `-i:file.json` (or `-i="file.json"`). If empty value
                             provided (`-i`), converter will search current directory for *.json file.
  -u|--url                   HTTP endpoint to fetch json input from.
  --skip-content-type-check  Flag specifies if http response Content-Type header check can be skipped. Only in
                             effect when -u option is provided.
  -c|--console-output        Flag specifies if converted yaml should be printed directly to console. (In this
                             case -o option is ignorred.)
  -o|--output                Path to output yaml file. E.g. `-o:file.yaml (or -o="file.yaml")`. If omitted or
                             empty value provided ('-o') converter will output to file named like input file or
                             the last segment of url, but with .yaml extension. Required if input is read from
  -m|--max-size              Specifies size limit for file to be converted. E.g. `-m:10`. If omitted, converter
                             will skip file larger that 20 MB. Respected only when used together with -i option.
  --format-null-as           Yaml can represent null in different ways. Supported values:
                             null|Null|NULL|~|empty. Default is "null".
  --use-old-json-parser      Use old json parser. This is temporary option. Will be removed in later version.
  --version                  Shows tool version. If more options are provided this option is ignored.
  -v|--verbose               Verbose output. Shows more details on errors.
  -?|-h|--help               Show help information


Since version 2.2.0 tool uses simplified json parser. For backword compatability added flag to use old parser:

json2yaml -i:input.json --use-old-json-parser


The simplest use case to take input from file:

json2yaml -i

This will search current directory for json file. Convert its contents to yaml. And writes output to file named as input file, but with extension .yaml.

For remote input use this:

json2yaml -u:https://localhost:5001/swagger/v1/swagger.json

This will fetch json from provided endpoint and will write content to swagger.yaml file.

To change output file name use -o|--output option:

json2yaml -u:https://localhost:5001/swagger/v1/swagger.json -o:api.yaml

To print conversion results directly to console use -c|--console-output flag:

json2yaml -i:input.json -c

Read input from stdin:

cat test.json | json2yaml -o:output.yaml

Format yaml output. Represent null as ~:

echo "[null, null]" | json2yaml -c --format-null-as:~

prints result:

- ~
- ~

Tool supports full piping scenarios:

cat swagger.json | json2yaml -c | grep version

This package has no dependencies.

Version Downloads Last updated
3.0.1 1,375 11/28/2021
2.2.0 148 10/9/2021
2.1.0 300 12/20/2020
2.0.0 318 7/9/2020
1.3.0 301 5/31/2020
1.2.7 300 4/18/2020
1.2.6 302 3/6/2020
1.2.5 350 12/23/2019
1.2.4 284 12/23/2019
1.2.3 297 12/21/2019
1.2.2 266 12/18/2019
1.2.1 283 11/9/2019
1.2.0 268 11/9/2019
1.1.0 313 10/21/2019
1.0.5 428 9/9/2019
1.0.4 403 8/10/2019
1.0.3 365 7/7/2019
1.0.2 325 6/13/2019
1.0.1 339 5/18/2019
1.0.0 341 5/15/2019
0.4.0 639 4/6/2019
0.3.2 542 1/20/2019
0.3.1 426 12/17/2018
0.3.0 486 12/9/2018
0.2.0 407 11/24/2018
0.1.2-alpha 445 11/14/2018
0.1.1-alpha 392 11/8/2018
0.1.0-alpha 374 11/6/2018

* fix: add .NET 6 support
* bump version of dependencies
* add .NET 6 support
* remove .NET Core 2.1 support
* bump version of dependencies
* simplified json parser
* improve json number handling (treat floating numbers as decimal)
* fix inconsistent date representation in simple value conversion
* add net5.0 support
* bump version of dependencies
* name output file based on last segment of url (if -u option is used and -o option is not provided)
* change default yaml null format (now null, was empty)
* remove dotnet core 2.2 and dotnet core 3.0 support
* add --skip-content-type-check flag
* fix issue when not all content of very huge file is written to file
* bump version of dependencies
* add --format-null-as option
* fix parsing error when root level list contains null values
* bump version of dependencies
* bump version of dependencies
* file io opperations made async
* fix incorrect recursion level handling in nested objects
* better support for lists with mixed types in root level
* bump versions of dependencies
* add dotnet core 3.1 support
* fix json2yaml throws error for null simple value
* support simple value types in root (e.g. echo 5 | json2yaml -c)
* support multiple runtimes: dotnet core 2.1, dotnet core 2.2, dotnet core 3.0
* add -v|--verbose option. It shows more detailed errors
* bump versions of dependencies
* add --version option. It shows only version string
* fix incorrect message when -u|--url option value is missing
* fix incorrect message when -m|--max-size option value is missing
* return error if json2yaml is run with no options in stdin mode (e.g. echo 5 | json2yaml)
* bump versions of dependencies
* use MIT licence identifier in package
* read input from redirected stdin. Full piping scenarious is supported
* -c|--console-output: print output results directly to console
* fix json2yaml -i throws when run on directory without any *.json file
* fix message when json size exceeds value provided with --max-size option
* support array in root
* -u|--url option to read input from http endpoint
* show tool version
* -m|--max-size option
* cleanup tool output to console
* handle gracefully command line parsing errors