在JSON.NET中,是否可能对带有umlauts的字符串进行编码,以便序列化后的字符串被编码为以下格式?
"Pläne" => "Pl\u00e4ne"
更新: 在sra的回答之后,我想到了以下代码,它对我有效。
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();
}
}