Added hammock project to debug streaming issues
[pithos-ms-client] / trunk / hammock / src / net35 / Hammock.Tests / Postmark / Converters / UnicodeJsonStringConverter.cs
1 using System;
2 using System.Text;
3 using Newtonsoft.Json;
4
5 namespace Hammock.Tests.Converters
6 {
7     internal class UnicodeJsonStringConverter : JsonConverter
8     {
9         public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
10         {
11             var buffer = new StringBuilder();
12             buffer.Append("\"");
13             var stringValue = (string)value;
14             foreach (var c in stringValue)
15             {
16                 var code = (int)c;
17                 switch (c)
18                 {
19                     case '\"':
20                         buffer.Append("\\\"");
21                         break;
22                     case '\\':
23                         buffer.Append("\\\\");
24                         break;
25                     default:
26                         if (code > 127)
27                         {
28                             buffer.AppendFormat("\\u{0:x4}", code);
29                         }
30                         else
31                         {
32                             buffer.Append(c);
33                         }
34                         break;
35                 }
36             }
37             buffer.Append("\"");
38
39             writer.WriteRawValue(buffer.ToString());
40         }
41
42         public override object ReadJson(JsonReader reader, Type objectType, object originalValue, JsonSerializer serializer)
43         {
44             return reader.Value;
45         }
46
47         public override bool CanConvert(Type objectType)
48         {
49             return objectType == typeof(string);
50         }
51     }
52 }
53
54