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 次。
我在尝试反序列化 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 次。