【发布时间】:2017-05-27 16:56:00
【问题描述】:
这是我从 Web 服务返回的 JSON 数据示例。
它有一个“odata.metadata”的单个节点,另一个“value”的单个节点,然后是由“Code”、“Name”和“XTag”3个字段组成的重复记录。这是在一个名为 Content
的字符串变量中{"odata.metadata":"https://notthereal.domain:3148/system/OData/$metadata#pageLocationList","value":[{"Code":"LOC-A","Name":"Location A","XTag":"36;DgAAAAJ7/zEAMAAwAC0ATQBBAEkATgAAAAAA8;264943250;"},{"Code":"LOC-B","Name":"Location B","XTag":"36;DgAAAAJ7/zEAMAAxAC0ATQBBAEkATgAAAAAA8;388906690;"},{"Code":"LOC-C","Name":"Location C","XTag":"36;DgAAAAJ7/zEAMAAyAC0ATQBBAEkATgAAAAAA8;388844480;"},{"Code":"LOC-D","Name":"Location D","XTag":"36;DgAAAAJ7/zEAMAAzAC0ATQBBAEkATgAAAAAA8;388876720;"}]}
我有以下作为模型,是通过将 JSON 数据粘贴到类中得到的。
public class ModelPageLocationList
{
public string odatametadata { get; set; }
public List<Value> value { get; set; }
}
public class Value
{
public string Code { get; set; }
public string Name { get; set; }
public string XTag { get; set; }
}
这是试图反序列化它的代码...
DataPageLocationList =
JsonConvert.DeserializeObject<List<ModelPageLocationList>>(content);
..这是错误消息。我被困住了!有任何想法吗?我认为问题在于开始时的 2 条单条记录,然后是之后的重复数据。
ERROR Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
这就是我所说的
public async Task<List<ModelPageLocationList>> RefreshPageLocationListAsync ()
{
DataPageLocationList = new List<ModelPageLocationList>();
var uri = new Uri(string.Format(WebServiceSettings.WebServiceUrl, string.Empty));
try
{
var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
Debug.WriteLine("{0}", content.ToString());
DataPageLocationList = JsonConvert.DeserializeObject<List<ModelPageLocationList>>(content);
}
} catch (Exception ex)
{
Debug.WriteLine(@"ERROR {0}", ex.Message);
}
return (DataPageLocationList);
}
【问题讨论】:
-
你能分享你试图反序列化的 JSON 吗?
-
这是帖子的第一行
标签: c# json json.net metadata json-deserialization