Encode umlauts in JSON.NET

Is it possible to encode strings with umlauts in JSON.NET so that the serialized string is encoded as follows?

"PlΓ€ne" => "Pl \ u00e4ne"

Update: After sra anwser, I came up with the following code that worked for me.

public class Utf8Converter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { string s = (string)value; s = EncodeNonAsciiCharacters(s); writer.WriteValue(s); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { throw new NotImplementedException(); } public override bool CanConvert(Type objectType) { return typeof(string).IsAssignableFrom(objectType); } private static string EncodeNonAsciiCharacters(string value) { StringBuilder sb = new StringBuilder(); foreach (char c in value) { if (c == '\t') sb.Append(@"\t"); else if (c == '\n') sb.Append(@"\n"); else if (c == '\r') sb.Append(@"\r"); else if (c > 127) { string encodedValue = @"\u" + ((int)c).ToString("x4"); sb.Append(encodedValue); } else { sb.Append(c); } } return sb.ToString(); } } 
+4
source share
1 answer

Yes, you can use your own converter, which will do it for you.

 internal class CustomConverter : JsonConverter { public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // your code } public override bool CanConvert(Type objectType) { // your code } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { // your code } } 
+4
source

All Articles