Mercurial > repos > tabletprog
diff modules/json.tp @ 271:bb4723fec05e
Support for encoding objects, dictionaries, lists and arrays to JSON in json module
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 19 Jul 2014 19:59:51 -0700 |
parents | 9d8ae39e8e67 |
children | bb2b4613fdc8 |
line wrap: on
line diff
--- a/modules/json.tp Fri Jul 18 20:45:50 2014 -0700 +++ b/modules/json.tp Sat Jul 19 19:59:51 2014 -0700 @@ -163,5 +163,35 @@ decode <- :text { (_decode: text at: 0) value } + + encode <- :value { + if: (object does: value understand?: "jsonEncode") { + value jsonEncode + } else: { + toEncode <- #[] + if: (object does: value understand?: "serializeFields") { + toEncode <- value serializeFields + } else: { + toEncode <- object propertiesOf: value + } + parts <- #[] + foreach: toEncode :idx field { + fieldVal <- object sendMessage: field to: value + parts append: (field jsonEncode) . ":" . (encode: fieldVal) + } + "{" . (parts join: ",") . "}" + } + } + + main <- { + o <- #{ + foo <- "bar" + baz <- ["fizz" "buzz" "buzzzz"] + qux <- ((dict hash) set: "fo" "shizzle") set: "my" "nizzle" + arr <- #["pirate" "booty"] + } + print: (encode: o) . "\n" + 0 + } } }