Chromium Code Reviews| Index: src/json.js |
| =================================================================== |
| --- src/json.js (revision 6322) |
| +++ src/json.js (working copy) |
| @@ -193,14 +193,14 @@ |
| // First entry is a string. Remaining entries are likely to be strings too. |
| builder.push(%QuoteJSONString(val)); |
| for (var i = 1; i < len; i++) { |
| - builder.push(","); |
| val = value[i]; |
| if (IS_STRING(val)) { |
| - builder.push(%QuoteJSONString(val)); |
| + builder.push(%QuoteJSONStringComma(val)); |
| } else { |
| + builder.push(","); |
| var before = builder.length; |
| BasicJSONSerialize(i, value[i], stack, builder); |
| - if (before == builder.length) builder.push("null"); |
| + if (before == builder.length) builder[before - 1] = ",null"; |
| } |
| } |
| } else if (IS_NUMBER(val)) { |
| @@ -216,7 +216,7 @@ |
| } else { |
| var before = builder.length; |
| BasicJSONSerialize(i, value[i], stack, builder); |
| - if (before == builder.length) builder.push("null"); |
| + if (before == builder.length) builder[before - 1] = ",null"; |
| } |
| } |
| } else { |
| @@ -228,7 +228,7 @@ |
| before = builder.length; |
| val = value[i]; |
| BasicJSONSerialize(i, val, stack, builder); |
| - if (before == builder.length) builder.push("null"); |
| + if (before == builder.length) builder[before - 1] = ",null"; |
| } |
| } |
| stack.pop(); |
| @@ -241,9 +241,11 @@ |
| throw MakeTypeError('circular_structure', []); |
| } |
| builder.push("{"); |
| + var not_first = false; |
|
Erik Corry
2011/01/14 14:42:57
This variable should be called first and the boole
sandholm
2011/01/16 21:08:43
Done.
|
| for (var p in value) { |
| if (%HasLocalProperty(value, p)) { |
| - builder.push(%QuoteJSONString(p)); |
| + if (not_first) builder.push(%QuoteJSONStringComma(p)); |
|
Erik Corry
2011/01/14 14:42:57
multi-line if statements should use {}
sandholm
2011/01/16 21:08:43
Done.
|
| + else builder.push(%QuoteJSONString(p)); |
| builder.push(":"); |
| var before = builder.length; |
| BasicJSONSerialize(p, value[p], stack, builder); |
| @@ -251,16 +253,12 @@ |
| builder.pop(); |
| builder.pop(); |
| } else { |
| - builder.push(","); |
| + not_first = true; |
| } |
| } |
| } |
| stack.pop(); |
| - if (builder.pop() != ",") { |
| - builder.push("{}"); // Object has no own properties. Push "{" back on. |
| - } else { |
| - builder.push("}"); |
| - } |
| + builder.push("}"); |
| } |