39 lines
981 B
Python
39 lines
981 B
Python
import json
|
|
import sys
|
|
import itertools
|
|
|
|
json_data = json.load(sys.stdin)
|
|
|
|
def lisp_dump(data):
|
|
if isinstance(data, int):
|
|
return str(data)
|
|
elif isinstance(data, float):
|
|
return str(data)
|
|
elif isinstance(data, str):
|
|
escaped_string = data.encode("unicode_escape").decode("utf-8")
|
|
return "\"" + escaped_string + "\""
|
|
elif isinstance(data, list):
|
|
result = "("
|
|
for i, item in enumerate(data):
|
|
result += lisp_dump(item)
|
|
if i + 1 < len(data):
|
|
result += " "
|
|
result += ")"
|
|
return result
|
|
elif isinstance(data, dict):
|
|
result = "#("
|
|
i = 0
|
|
for key, item in data.items():
|
|
result += "(%s . %s)" % (key, lisp_dump(item))
|
|
if i + 1 < len(data):
|
|
result += " "
|
|
i += 1
|
|
result += ")"
|
|
return result
|
|
else:
|
|
print("error")
|
|
print(type(data))
|
|
|
|
print(lisp_dump(json_data))
|
|
|