4
是否可以在JSON.NET中使用变音符号来编码字符串,而序列化字符串是这样编码的?在JSON.NET中编码变音符号
“平面”=> “PL \ u00e4ne”
更新: SRA anwser后,我想出了为我工作了下面的代码。
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();
}
}
第一次我忘了代码... – sra 2011-05-10 17:20:17