Add json_dump

This commit is contained in:
Daehee Kim
2019-08-15 12:14:19 +09:00
parent 93dfbdcaa9
commit d60e72ec57

View File

@@ -10,6 +10,12 @@ pub fn json_dumps(obj: PyObjectRef, vm: &VirtualMachine) -> PyResult<String> {
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
})