JsonConvert 无法反序列化对象的一部分

JsonConvert fails to Deserialize part of an object

我在尝试反序列化 json 对象时遇到以下异常:

JsonSerializationException: Error converting value "[{"ID":"1111","FirstName":".","LastName":"test","AdditionalName":"","ID_PassportNum":"NONE","DateOfBirth":""}] to type 'System.Collections.Generic.List`1[MoblieCP.Models.UserInfo]'. Path 'Data', line 1, position 1303

我从服务器收到以下格式的响应:

{
"CodeError":0,
"Data":"[{\"ID\":\"1111\",\"FirstName\":\".\",\"LastName\":\"test\",\"AdditionalName\":\"\",\"ID_PassportNum\":\"NONE\",\"DateOfBirth\":\"\"}]",
"ErrorMessage":null
}

数据部分始终是一个列表,即使它只有一项。

我构建了一个通用的 class 来保存服务器响应:

public class GenericResponse<T>
{
    [JsonProperty("CodeError")]
    public ResponseCodes CodeError { get; set; }

    [JsonProperty("Data")]
    public T Data { get; set; }

    [JsonProperty("ErrorMessage")]
    public string ErrorMessage { get; set; }
}

这是我尝试反序列化的部分:

jsonResult = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);
var json = JsonConvert.DeserializeObject<GenericResponse<List<UserInfo>>(jsonResult);

每次JsonConverterreturns那个异常。

当我尝试将 "data" 本身(不是作为 GenericResponse 对象的一部分)反序列化为 List<UserInfo> 时,我成功了。 但我不想每次都必须进行 2 次反序列化。

数据序列化的时候好像是先List<UserInfo>序列化,然后添加到整个对象中。这就是为什么你必须反序列化它 2 次。