Json Десериализация исключения, преобразующего строку в тип 'System.Collections.Generi c .Dictionary' - PullRequest
0 голосов
/ 18 апреля 2020

У меня очень простая JSON строка

"{\"Region\":\"uk\"}"

Я преобразую его в словарь, как это

string  data =  "{\"Region\":\"uk\"}";
var dataOut = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);

Приведенный выше код работает нормально на Моя локальная среда и среда QA / UAT, но при этом на рабочем сервере выдается следующая ошибка

Newtonsoft.Json.JsonSerializationException: Error converting value "{"Region":"uk"}" to type 'System.Collections.Generic.Dictionary`2[System.String,System.String]'. Path '', line 1, position 21. ---> System.ArgumentException: Could not cast or convert from System.String to System.Collections.Generic.Dictionary`2[System.String,System.String].
   at Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable(Object value, Type initialType, Type targetType)
   at Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(Object initialValue, CultureInfo culture, Type targetType)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   --- End of inner exception stack trace ---
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)

Здесь Do tnet fiddle , где код работает нормально

Newtonsoft . Json версия 7.0, но

. У меня есть версия Net framework для сред QA и UAT: 4.7.2558.0 , но на производстве - 4.8.3761.0

Возможно ли, что. Net Framework 4.8 является причиной этой ошибки.

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