Как удалить Unicode в JSON.NET - PullRequest
       5

Как удалить Unicode в JSON.NET

0 голосов
/ 24 января 2019

У меня есть JSON с частями в Юникоде, как { "val1": "\u003c=AA+ \u003e=AA-"} Как я могу преобразовать это в JSON, который не имеет форматирования Unicode? {"val1": "<=AA+ >=AA-"}

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я попробовал следующее в Linqpad, и это сработало.

var s = @"{ ""val1"": ""\u003c=AA+ \u003e=AA-""}";
System.Text.RegularExpressions.Regex.Unescape(s).Dump();
0 голосов
/ 24 января 2019

Json.NET исключает последовательности Unicode внутри JsonTextReader, поэтому вы можете принять тот же подход, который используется в в этом ответе до Как получить отформатированный JSON в .NET с помощью C #? от Duncan Smart для переформатирования вашего JSON без ненужного экранирования путем потоковой передачи непосредственно с JsonTextReader на 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-"}

Демонстрационная скрипка здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...