将Json Unicode转换为Utf8

Emi*_*mil 1 c# encoding json

将Json Unicode(?)转换为UTF8时,我遇到了一个奇怪的问题

"V\u00E4xj\u00F6"应为"Växjö"

现在看起来我已经尽了一切可能,但没有运气.

任何可能存在解决方案的编码忍者?我相信这很容易,但似乎无法弄明白.

谢谢

pas*_*sty 5

正如Tomalak指出的那样,可以使用System.Web.Helpers.Json.Decode方法(没有外部库,.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);
Run Code Online (Sandbox Code Playgroud)

输出是:

Växjö
Växjö
Run Code Online (Sandbox Code Playgroud)

一种可能性是使用Json.NET库来解码字符串(或者可能是整个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);
Run Code Online (Sandbox Code Playgroud)

输出是:

{
  "Name": "Växjö"
}
Växjö
Run Code Online (Sandbox Code Playgroud)

  • 我更新了我的答案 - 代码现在仅依赖于 .NET Framework。 (2认同)