Added a subtle but useful | to the toolbar
[htsworkflow.git] / htsworkflow / util / jsonutil.py
1 import json
2
3 _ENCODER_METHOD = 1
4 _WRITE_METHOD = 2
5
6 JSON_METHOD = None
7
8 try:
9     json.write({})
10 except:
11     JSON_METHOD = _ENCODER_METHOD
12
13 try:
14     json.JSONEncoder()
15 except:
16     JSON_METHOD = _WRITE_METHOD
17
18 assert JSON_METHOD is not None
19
20
21 def encode_json(data):
22     """
23     encodes json data given whatever json module we have access to (2.6 builtin or python-json)
24     """
25     if JSON_METHOD == _ENCODER_METHOD:
26         j = json.JSONEncoder()
27         return j.encode(data)
28     
29     elif JSON_METHOD == _WRITE_METHOD:
30         return json.write(data)
31
32     msg = "JSON_METHOD of value %s not supported." % (JSON_METHOD)
33     raise ValueError, msg