Index: frog/server/dart_json.dart |
=================================================================== |
--- frog/server/dart_json.dart (revision 3201) |
+++ frog/server/dart_json.dart (working copy) |
@@ -496,7 +496,8 @@ |
// TODO: add others. |
static bool _needsEscape(int charCode) { |
- return JsonTokenizer.QUOTE == charCode || JsonTokenizer.BACKSLASH == charCode; |
+ return JsonTokenizer.QUOTE == charCode || JsonTokenizer.BACKSLASH == charCode |
+ || JsonTokenizer.NEW_LINE == charCode || JsonTokenizer.LINE_FEED == charCode; |
} |
static void _escape(StringBuffer sb, String s) { |
@@ -507,10 +508,16 @@ |
bool needsEscape = false; |
final charCodes = new List<int>(); |
for (int i = 0; i < length; i++) { |
- final int charCode = s.charCodeAt(i); |
+ int charCode = s.charCodeAt(i); |
if (_needsEscape(charCode)) { |
charCodes.add(JsonTokenizer.BACKSLASH); |
needsEscape = true; |
+ |
+ if (JsonTokenizer.NEW_LINE == charCode) { |
+ charCode = 110; // 'n' |
+ } else if (JsonTokenizer.LINE_FEED == charCode) { |
+ charCode = 114; // 'r' |
+ } |
} |
charCodes.add(charCode); |
} |