将Json Unicode(?)转换为UTF8时,我面临一个更棘手的问题
“ V \ u00E4xj \ u00F6”应为“Växjö”
现在看来,我已经尝试了所有可能的方法,但是没有运气。
有没有其他编码忍者可以坐在解决方案上?我敢肯定这很简单,但似乎仍然无法弄清楚。
谢谢
最佳答案
正如Tomalak指出的那样,可以使用System.Web.Helpers.Json.Decode method(没有外部库,.NET Framework)完成此操作。您需要构建一个简单的JSON对象来获取解码后的文本:
// helper class
public class Dummy
{
public String Field { get; set; }
}
//
var value = "V\u00E4xj\u00F6";
var sb = new StringBuilder();
sb.Append("{");
sb.Append(String.Format(@"""Field"" : ""{0}""", value));
sb.Append("}");
var dummy = Json.Decode(sb.ToString());
Console.WriteLine(dummy.Field);
// it works also without helper class
var obj = Json.Decode(sb.ToString());
Console.WriteLine(obj.Field);
输出为:
Växjö
Växjö
一种可能性是使用Json.NET library来解码字符串(或者可能是用于整个JSON处理?)。解串器自动解码字符串。我的测试代码如下所示:
// placeholder for the example
public class Sample
{
public String Name { get; set; }
}
//
var i = @"{ ""Name"" : ""V\u00E4xj\u00F6"" }";
var jsonConverter = Newtonsoft.Json.JsonConvert.DeserializeObject(i);
Console.WriteLine(jsonConverter.ToString());
//
var sample = Newtonsoft.Json.JsonConvert.DeserializeObject<Sample>(i);
Console.WriteLine(sample.Name);
输出为:
{
"Name": "Växjö"
}
Växjö