diff --git a/boa/src/builtins/json/mod.rs b/boa/src/builtins/json/mod.rs index aeb0801dddc..b6f7076a7fa 100644 --- a/boa/src/builtins/json/mod.rs +++ b/boa/src/builtins/json/mod.rs @@ -68,6 +68,7 @@ pub fn parse(_: &mut Value, args: &[Value], _: &mut Interpreter) -> ResultValue /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify pub fn stringify(_: &mut Value, args: &[Value], _: &mut Interpreter) -> ResultValue { let object = args.get(0).expect("cannot get argument for JSON.stringify"); + let object_to_return = Value::new_object(None); if let Some(arg) = args.get(1) { match arg.data() { ValueData::Object(ref obj) => { @@ -75,23 +76,26 @@ pub fn stringify(_: &mut Value, args: &[Value], _: &mut Interpreter) -> ResultVa let borrowed_derefed_obj = derefed_obj.borrow(); if borrowed_derefed_obj.kind == ObjectKind::Array { for (key, value) in borrowed_derefed_obj.properties.iter() { - println!("{:?}", key); if let Some(Value(x)) = &value.value { - object.remove_property(&x.to_string()); - println!("{:?}", x); + if key != "length" { + object_to_return.set_property( + x.to_string(), + object.get_property(&x.to_string()).unwrap() + ); + } } } + return Ok(Value::from(object_to_return.to_json().to_string())); } else { - println!("this is not an array"); + panic!("replacer only supports arrays at this time"); } } _ => { - panic!("arg.data() second half match") + panic!("replacer only supports arrays at this time"); } } } let json = object.to_json().to_string(); - println!("returned value: {:?}", &json); Ok(Value::from(json)) }