JSON output

Supported types:

  • number: %llu

  • string: %s

  • string: str (escaped special characters)

  • bool: bool (unquoted native json value)

  • qgroupid: qgroupid (split to 48/16 for level/subvolid)

  • size: size

Commands that support json output

  • btrfs device stats

  • btrfs filesystem df

  • btrfs qgroup show

  • btrfs subvolume get-default

  • btrfs subvolume list

  • btrfs subvolume show

Recommendations

  • key names
    • should be unified if they mean the same thing

    • not abbreviated (e.g. generation instead of gen)

    • referring to existing and well known names (qgroupid, devid, …)

  • values
    • numbers without suffix or other transformation, i.e. no KiB

  • printing more data about an item is better than printing less, assuming the filtering is done on the user side

  • structure of json output may not reflect the way it’s printed in plain text, in that case do two separate printer functions

  • if plain and json output roughly follow the same style, e.g. line oriented that is easy to transform to a map, then both outputs should use the same rowspec