summaryrefslogtreecommitdiff
path: root/yarns/lib.py
diff options
context:
space:
mode:
Diffstat (limited to 'yarns/lib.py')
-rw-r--r--yarns/lib.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/yarns/lib.py b/yarns/lib.py
index 9040bb7..fc4acfc 100644
--- a/yarns/lib.py
+++ b/yarns/lib.py
@@ -68,7 +68,28 @@ def request(method, url, body=None):
def parse_json(text):
- return json.loads(text)
+ return json.loads(text, object_pairs_hook=dictify)
+
+
+
+def dictify(pairs):
+ return {
+ stringify(key): stringify(value)
+ for key, value in pairs
+ }
+
+
+def stringify(x):
+ if isinstance(x, unicode):
+ return str(x)
+ if isinstance(x, list):
+ return [stringify(y) for y in x]
+ if isinstance(x, dict):
+ return {
+ stringify(key): stringify(value)
+ for key, value in pairs
+ }
+ return x
def parse_yaml(text):