如何在JSON.NET中unescape unicode

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JSON.NET中unescape unicode相关的知识,希望对你有一定的参考价值。

我有像Jazxswpoi这样的Unicode部件的JSON如何将其转换为没有Unicode格式的JSON? { "val1": "u003c=AA+ u003e=AA-"}

答案

Json.NET unescape在{"val1": "<=AA+ >=AA-"}中的Unicode序列,所以你可以采用JsonTextReaderthis answerHow do I get formatted JSON in .NET using C#?相同的方法来重新格式化你的JSON,而不需要通过使用Duncan SmartJsonTextReader直接流式传输到JsonTextWriter而不必要的转义:

JsonWriter.WriteToken(JsonReader)

使用此方法,以下代码:

public static partial class JsonExtensions
{
    // Adapted from this answer https://stackoverflow.com/a/30329731
    // To https://stackoverflow.com/q/2661063
    // By Duncan Smart https://stackoverflow.com/users/1278/duncan-smart

    public static string JsonPrettify(string json, Formatting formatting = Formatting.Indented)
    {
        using (var stringReader = new StringReader(json))
        using (var stringWriter = new StringWriter())
        {
            return JsonPrettify(stringReader, stringWriter, formatting).ToString();
        }
    }

    public static TextWriter JsonPrettify(TextReader textReader, TextWriter textWriter, Formatting formatting = Formatting.Indented)
    {
        // Let caller who allocated the the incoming readers and writers dispose them also
        // Disable date recognition since we're just reformatting
        using (var jsonReader = new JsonTextReader(textReader) { DateParseHandling = DateParseHandling.None, CloseInput = false })
        using (var jsonWriter = new JsonTextWriter(textWriter) { Formatting = formatting, CloseOutput = false })
        {
            jsonWriter.WriteToken(jsonReader);
        }
        return textWriter;
    }
}

输出

var json = @"{ ""val1"": ""u003c=AA+ u003e=AA-""}";
var unescapedJson = JsonExtensions.JsonPrettify(json, Formatting.None);
Console.WriteLine("Unescaped JSON: {0}", unescapedJson);

演示小提琴Unescaped JSON: {"val1":"<=AA+ >=AA-"}

另一答案

我在Linqpad中尝试了以下内容并且它有效。

here

以上是关于如何在JSON.NET中unescape unicode的主要内容,如果未能解决你的问题,请参考以下文章

等价于各种 Unices 上的 fesetflushtozero()

如何在C#中unescape unicode字符串

无法在 C# 中使用 Regex.Unescape 删除转义序列

Python中escape和unescape

如何在 C# 中动态转换来自 Json.NET 的解析 JSON 结果?

如何在 MVC 5 项目中使用 Json.NET 进行 JSON 模型绑定?