| Index: src/json.js
|
| ===================================================================
|
| --- src/json.js (revision 8618)
|
| +++ src/json.js (working copy)
|
| @@ -153,7 +153,7 @@
|
| if (IS_STRING(value)) {
|
| return %QuoteJSONString(value);
|
| } else if (IS_NUMBER(value)) {
|
| - return NUMBER_IS_FINITE(value) ? $String(value) : "null";
|
| + return JSON_NUMBER_TO_STRING(value);
|
| } else if (IS_BOOLEAN(value)) {
|
| return value ? "true" : "false";
|
| } else if (IS_NULL(value)) {
|
| @@ -164,7 +164,7 @@
|
| return SerializeArray(value, replacer, stack, indent, gap);
|
| } else if (IS_NUMBER_WRAPPER(value)) {
|
| value = ToNumber(value);
|
| - return NUMBER_IS_FINITE(value) ? ToString(value) : "null";
|
| + return JSON_NUMBER_TO_STRING(value);
|
| } else if (IS_STRING_WRAPPER(value)) {
|
| return %QuoteJSONString(ToString(value));
|
| } else if (IS_BOOLEAN_WRAPPER(value)) {
|
| @@ -191,31 +191,37 @@
|
| var val = value[0];
|
| if (IS_STRING(val)) {
|
| // First entry is a string. Remaining entries are likely to be strings too.
|
| - builder.push(%QuoteJSONString(val));
|
| - for (var i = 1; i < len; i++) {
|
| - val = value[i];
|
| - if (IS_STRING(val)) {
|
| - builder.push(%QuoteJSONStringComma(val));
|
| - } else {
|
| - builder.push(",");
|
| - var before = builder.length;
|
| - BasicJSONSerialize(i, value[i], stack, builder);
|
| - if (before == builder.length) builder[before - 1] = ",null";
|
| + var array_string = %QuoteJSONStringArray(value);
|
| + if (!IS_UNDEFINED(array_string)) {
|
| + // array_string also includes bracket characters so we are done.
|
| + builder[builder.length - 1] = array_string;
|
| + stack.pop();
|
| + return;
|
| + } else {
|
| + builder.push(%QuoteJSONString(val));
|
| + for (var i = 1; i < len; i++) {
|
| + val = value[i];
|
| + if (IS_STRING(val)) {
|
| + builder.push(%QuoteJSONStringComma(val));
|
| + } else {
|
| + builder.push(",");
|
| + var before = builder.length;
|
| + BasicJSONSerialize(i, val, stack, builder);
|
| + if (before == builder.length) builder[before - 1] = ",null";
|
| + }
|
| }
|
| }
|
| } else if (IS_NUMBER(val)) {
|
| // First entry is a number. Remaining entries are likely to be numbers too.
|
| - builder.push(NUMBER_IS_FINITE(val) ? %_NumberToString(val) : "null");
|
| + builder.push(JSON_NUMBER_TO_STRING(val));
|
| for (var i = 1; i < len; i++) {
|
| builder.push(",");
|
| val = value[i];
|
| if (IS_NUMBER(val)) {
|
| - builder.push(NUMBER_IS_FINITE(val)
|
| - ? %_NumberToString(val)
|
| - : "null");
|
| + builder.push(JSON_NUMBER_TO_STRING(val));
|
| } else {
|
| var before = builder.length;
|
| - BasicJSONSerialize(i, value[i], stack, builder);
|
| + BasicJSONSerialize(i, val, stack, builder);
|
| if (before == builder.length) builder[before - 1] = ",null";
|
| }
|
| }
|
| @@ -226,8 +232,7 @@
|
| for (var i = 1; i < len; i++) {
|
| builder.push(",");
|
| before = builder.length;
|
| - val = value[i];
|
| - BasicJSONSerialize(i, val, stack, builder);
|
| + BasicJSONSerialize(i, value[i], stack, builder);
|
| if (before == builder.length) builder[before - 1] = ",null";
|
| }
|
| }
|
| @@ -273,9 +278,9 @@
|
| }
|
| }
|
| if (IS_STRING(value)) {
|
| - builder.push(%QuoteJSONString(value));
|
| + builder.push(value !== "" ? %QuoteJSONString(value) : '""');
|
| } else if (IS_NUMBER(value)) {
|
| - builder.push(NUMBER_IS_FINITE(value) ? %_NumberToString(value) : "null");
|
| + builder.push(JSON_NUMBER_TO_STRING(value));
|
| } else if (IS_BOOLEAN(value)) {
|
| builder.push(value ? "true" : "false");
|
| } else if (IS_NULL(value)) {
|
| @@ -285,7 +290,7 @@
|
| // Unwrap value if necessary
|
| if (IS_NUMBER_WRAPPER(value)) {
|
| value = ToNumber(value);
|
| - builder.push(NUMBER_IS_FINITE(value) ? %_NumberToString(value) : "null");
|
| + builder.push(JSON_NUMBER_TO_STRING(value));
|
| } else if (IS_STRING_WRAPPER(value)) {
|
| builder.push(%QuoteJSONString(ToString(value)));
|
| } else if (IS_BOOLEAN_WRAPPER(value)) {
|
|
|
| Property changes on: src/json.js
|
| ___________________________________________________________________
|
| Modified: svn:mergeinfo
|
| Merged /branches/bleeding_edge/src/json.js:r8061-8597
|
|
|
|
|