import sys import yaml import json from collections import OrderedDict def ordered_load(stream, Loader=yaml.Loader, object_pairs_hook=OrderedDict): class OrderedLoader(Loader): pass def construct_mapping(loader, node): loader.flatten_mapping(node) return object_pairs_hook(loader.construct_pairs(node)) OrderedLoader.add_constructor( yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping) return yaml.load(stream, OrderedLoader) #obj = json.load(sys.stdin, object_pairs_hook=OrderedDict) obj = ordered_load(sys.stdin, yaml.SafeLoader) print(json.dumps(obj, indent=4, sort_keys=False))