From d60e72ec57544617a48264ab418fbfc3a51df842 Mon Sep 17 00:00:00 2001 From: Daehee Kim Date: Thu, 15 Aug 2019 12:14:19 +0900 Subject: [PATCH] Add `json_dump` --- vm/src/stdlib/json.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/vm/src/stdlib/json.rs b/vm/src/stdlib/json.rs index 8b5d21b75..2ec3bfffa 100644 --- a/vm/src/stdlib/json.rs +++ b/vm/src/stdlib/json.rs @@ -10,6 +10,12 @@ pub fn json_dumps(obj: PyObjectRef, vm: &VirtualMachine) -> PyResult { serde_json::to_string(&serializer).map_err(|err| vm.new_type_error(err.to_string())) } +pub fn json_dump(obj: PyObjectRef, fs: PyObjectRef, vm: &VirtualMachine) -> PyResult { + let result = json_dumps(obj, vm)?; + vm.call_method(&fs, "write", vec![vm.new_str(result)])?; + Ok(vm.get_none()) +} + /// Implement json.loads pub fn json_loads(string: PyStringRef, vm: &VirtualMachine) -> PyResult { // TODO: Implement non-trivial deserialization case @@ -45,6 +51,7 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef { py_module!(vm, "json", { "dumps" => ctx.new_rustfunc(json_dumps), + "dump" => ctx.new_rustfunc(json_dump), "loads" => ctx.new_rustfunc(json_loads), "JSONDecodeError" => json_decode_error })