From 1d5f05c568b18fd8610bdfd029a3d9b76be1c76a Mon Sep 17 00:00:00 2001 From: Jonas Dohse Date: Thu, 28 Nov 2013 13:49:37 +0000 Subject: [PATCH] Do not serialize `undefined` property values According to the [ES5 specification](http://es5.github.io/#x15.12.3) `JSON.stringify()` should not serialize undefined values. --- js/js_value.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/js_value.cc b/js/js_value.cc index f1a2c5a4..0bc037c3 100644 --- a/js/js_value.cc +++ b/js/js_value.cc @@ -436,8 +436,14 @@ Json::Value from_js(const JSValue & val, Json::Value *) v8::Handle key = prop_names->Get(v8::Uint32::New(i))->ToString(); if (!objPtr->HasOwnProperty(key)) continue; + + const auto & value = objPtr->Get(key); + if (value->IsUndefined()) { + continue; + } + result[from_js(key, (string *)0)] = - from_js(objPtr->Get(key), (Json::Value *)0); + from_js(value, (Json::Value *)0); } return result;