comparison python/jsonex.py @ 687:e50a95358db3

allow loading urls
author Jeff Hammel <k0scist@gmail.com>
date Mon, 02 Jun 2014 11:20:19 -0700
parents cea81044578e
children 6f48a3e5ab41
comparison
equal deleted inserted replaced
685:3da85ac3c54f 687:e50a95358db3
2 2
3 """ 3 """
4 JSON explorer 4 JSON explorer
5 """ 5 """
6 6
7 import argparse
7 import json 8 import json
9 import os
8 import sys 10 import sys
9 from pprint import pprint 11 import urllib2
10 12
11 def main(args=sys.argv[1:]): 13 def main(args=sys.argv[1:]):
12 data = sys.stdin.read() # read from stdin
13 obj = json.loads(data)
14 14
15 if args: 15 # command line
16 for arg in args: 16 parser = argparse.ArgumentParser(description='__doc__')
17 parser.add_argument('input', nargs='?',
18 help="input file or url (read from stdin if ommitted)")
19 parser.add_argument('object', nargs='*',
20 help="object in dotted notation")
21
22 options = parser.parse_args(args)
23
24 # get data
25 if not options.input or options.input == '-':
26 data = sys.stdin
27 elif'://' in options.input:
28 data = urllib2.urlopen(options.input)
29 else:
30 data = open(options.input, 'r')
31 obj = json.load(data)
32
33 if options.object:
34 for o in options.object:
17 foo = arg.split('.') # split into objects 35 foo = arg.split('.') # split into objects
18 # TODO: split into slice notation 36 # TODO: split into slice notation
19 pass # TODO 37 pass # TODO
20 else: 38 else:
21 print json.dumps(obj, indent=2, sort_keys=True) 39 print json.dumps(obj, indent=2, sort_keys=True)