Windows phone 8 json使用列表转换json<&燃气轮机;元素WP8
我有一个来自webservice的json,其中有一个列表元素。 但是当我尝试使用Newtonsoft.Json反序列化它时Windows phone 8 json使用列表转换json<&燃气轮机;元素WP8,windows-phone-8,Windows Phone 8,我有一个来自webservice的json,其中有一个列表元素。 但是当我尝试使用Newtonsoft.Json反序列化它时 Response resp = JsonConvert.DeserializeObject<Response>(responseStr); Response resp=JsonConvert.DeserializeObject(responsest); 然后,当我使用resp.ProjectList获取列表时,它抛出一个空指针异常。 因此,列表没有被反序列
Response resp = JsonConvert.DeserializeObject<Response>(responseStr);
Response resp=JsonConvert.DeserializeObject(responsest);
然后,当我使用resp.ProjectList获取列表时,它抛出一个空指针异常。
因此,列表
没有被反序列化。
你知道我错过了什么吗
答复的形式如下:
public Response
{
public string msg;
public List<Project> ProjectList{get; set;}
}
[DataContract]
public class Project
{
[DataMember]
public string ID {get; set;}
}
公众响应
{
公共字符串msg;
公共列表项目列表{get;set;}
}
[数据合同]
公共类项目
{
[数据成员]
公共字符串ID{get;set;}
}
只需删除[DataContract]
和[DataMember]
属性,它们无法与Json.NET很好地混合
或者您可以“手动”进行反序列化
以下是json:{“Msg”:“Success”,“ProjectList”:[{“ID”:“/Date(1400120100000-0700)/”},{“ID”:“/Date(1404260520000-0700)/“}]}我从另一个团队收到了数据合同,因此我有一个dll,无法对其进行更改。使用手动解析确实有效,但是,当我尝试在VisualStudio13上使用相同版本的newtonsoft运行相同的代码时,它成功了!你知道这是因为IDE版本(因为json convertor lib的code nd版本是相同的)还是我可能缺少什么?
var j = JToken.Parse("{ \"Msg\": \"Success\", \"ProjectList\": [ { \"ID\": \"/Date(1400120100000-0700)/\" }, { \"ID\": \"/Date(1404260520000-0700)/\" } ] } ");
var resp = new Response
{
msg = j.SelectToken("Msg").ToString(),
ProjectList = ((JArray) j.SelectToken("ProjectList")).Select(l => new Project {ID = l.SelectToken("ID").ToString()}).ToList()
};