Tak wyglada json
var json = @"{""ErrorType"":""BadRequestError"",""StatusCode"":400,""StackTrace"":"" STACKTRACEFOO "",""Messages"":[""User does not exist""]}";
Deserializuje jsona w ten sposob
var serializeOptions = new JsonSerializerOptions();
serializeOptions.Converters.Add(new ErrorConverter());
serializeOptions.WriteIndented = true;
var error = JsonSerializer.Deserialize<Error>(json, serializeOptions);
wszystko działa pieknie dopoki nie trafi na messages / tablice
kod ktory deserialuzuje liste jest ponizej.
private List<string> PopulateList(in Utf8JsonReader reader)
{
var list = new List<string>();
if (reader.TokenType != JsonTokenType.StartArray)
{
throw new JsonException("Failed to deserialize array.");
}
while (reader.Read())
{
if (reader.TokenType == JsonTokenType.EndArray)
{
break;
}
var item = reader.GetString();
if (!string.IsNullOrEmpty(item))
{
list.Add(item);
}
}
return list;
}
dostaje Exceptiona nastepnujacego
System.InvalidOperationException: Cannot get the value of a token type 'StartArray' as a string.
na linijce
var item = reader.GetString();
z kolei reader.Read()
"nic" nie robi. reader.TokenType
jest zawsze JsonTokenType.StartArray
,
Pytanie, co robie zle?