Исправлено отсутствие конструктора без параметров, определенного для типа 'System.String []' во время десериализации. - PullRequest
0 голосов
/ 08 июля 2020

Мне не удается десериализовать HttpResponseMessage и сохранить значение в виде строки [].

string content = message.Content.ReadAsStringAsync().Result;
string[] result = new JavaScriptSerializer().Deserialize<string[]>(content);

Мне пришлось изменить устаревший Type t на string [], потому что подпись метода API изменилась и поэтому теперь я получаю сообщение об ошибке: Для типа 'System.String []' не определен конструктор без параметров .

Я не нашел решения своего вопроса ни в Интернете, ни в stackoverflow но я пытался использовать этот метод FormatterServices.GetUninitializedObject (Type), но когда я помещаю значение результата правой руки в скобки, я получаю сообщение об ошибке: не может преобразовать из 'string []' в 'System.Type' что имеет смысл, поскольку я считаю, что этот метод создает экземпляр, а не «помогает» десериализации.

Как мне правильно получить значение из моего десериализованного HttpResponseMessage в виде строки []?

Ссылки:

Конструктор без параметров не определен для типа 'System.String' во время JSON десериализации

1 Ответ

0 голосов
/ 08 июля 2020

Как упоминал @Crowcoder в комментариях, ответ на мою проблему - использовать List<string> с последующим вызовом .ToArray() вместо string[], потому что он содержит конструктор без параметров по умолчанию.

string content = message.Content.ReadAsStringAsync().Result;
List<string> temp = new JavaScriptSerializer().Deserialize<List<string>>(content);
string[] actual = temp.ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...