This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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))
|
||||
|
||||
Reference in New Issue
Block a user