Ошибка преобразования значения «utf-8» в тип «System.Text.Encoding» - PullRequest
1 голос
/ 05 августа 2020

Я хочу десериализовать файл Json. Значение Json содержит одно значение класса кодирования. При десериализации значения json это приводит к следующей ошибке.

Ошибка преобразования значения «utf-8» в тип «System.Text.Encoding»

Json формат

{
  "HostConnection": {
    "Address": "testAddress",
    "MessageEncoding": "utf-8",
    }
}   

В приведенном выше Json,

  • HostConnection - это имя класса
  • Адрес - это строковый тип данных
  • MessageEncoding - это тип данных кодирования

Сериализация ,

var deserializedData= JsonConvert.DeserializeObject<HostConnection>(jsonVal);

Может кто-нибудь скажите мне, почему это произошло.

1 Ответ

0 голосов
/ 05 августа 2020

Это потому, что если значение Encoding установлено в UTF-8, когда оно преобразуется в json, это не «MessageEncoding»: «utf-8», а структура, подобная следующей:

{
    "Address":"String content",
    "MessageEncoding":{
        "dataItem":{
            "m_bodyName":"String content",
            "m_dataIndex":2147483647,
            "m_flags":4294967295,
            "m_headerName":"String content",
            "m_uiFamilyCodePage":2147483647,
            "m_webName":"String content"
        },
        "decoderFallback":{
            "bIsMicrosoftBestFitFallback":true
        },
        "encoderFallback":{
            "bIsMicrosoftBestFitFallback":true
        },
        "m_codePage":2147483647,
        "m_isReadOnly":true
    }
}

Вот моя демонстрация:

            HostConnection hostConnection = new HostConnection();
            hostConnection.Address = "Test";
            hostConnection.MessageEncoding = Encoding.UTF8;
            string json=JsonConvert.SerializeObject(hostConnection);
            Console.WriteLine(json);

введите описание изображения здесь

Если проблема не исчезнет, ​​дайте мне знать.

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