serialize_simple
Usage
import { SerializeSimple } from 'https://deno.land/x/serialize_simple/mod.ts';
// OR
import { serialize, deserialize } from 'https://deno.land/x/serialize_simple/mod.ts';
const obj = { data: [2021, true, 'ftw', { x: 1, y: -3 }] };
const result = SerializeSimple.serialize(obj);
result
is a string that can be deserialized in any other conventional
language/system:
result: "%7B%22data%22%3A%5B2021%2Ctrue%2C%22ftw%22%2C%7B%22x%22%3A1%2C%22y%22%3A-3%7D%5D%7D"
The deserialize
method takes a serialized string as input and returns native JavaScript object.
More Details and Raison d'Etre
When using serialize_simple
, your application can invoke a command line
program (written in Python, for example) and send a list of parameters
without worrying about unpredictable shell behavior encountering special
characters.
Escaping dynamically created objects for shell command safety is typically both
painstaking and error prone. serialize_simple
is an easy solution.
This module uses standard tech, thus providing complete interoperability among various languages, frameworks, operating systems, and environments.
Interoperability Example: Python Port
Serialization is a simple, two-step process:
- JSON.stringify native object.
- URL encode the JSON.
Deserialization is the same, in reverse:
- URL decode the string back to JSON.
- JSON.parse the JSON string back to native object.
Below is a script demonstrating an implementation of deserialize in python:
#!/usr/bin/env python
import sys
import urllib.parse
import json
def deserialize(str):
json_str = urllib.parse.unquote(str)
return json.loads(json_str)
def main():
# get serialized params from command line
serialized_str = sys.argv[1]
# => %7B%22port%22%3A9393%2C%22host%22%3A%22cezanne.museum%22%2C%22baroque%22%3Afalse%7D
# deserialize string created by Deno's serialize_simple module
native_object = deserialize(serialized_str)
print(native_object) # => {'port': 9393, 'host': 'cezanne.museum', 'baroque': False}
if __name__ == '__main__':
main()
Contribute
Merely by using this module, you will contribute to your own productivity.
Have fun!
Gerry Gold, 2021