从 Windows Phone 8.1 中的 Web 服务序列化 JSON

Serialize JSON from Web service in Windows Phone 8.1

我正在尝试序列化 Web 服务调用的结果,但是当我使用来自 Web 服务的字符串结果时,它不起作用,但是,如果我使用具有相同内容的字符串,它就起作用了。

这是我用来调用网络服务的代码:

 var client = new HttpClient();
 var response = await client.GetAsync(new Uri(url));
 string result = await response.Content.ReadAsStringAsync();

结果字符串是这样的 Json:

{"aa":[{"ts":"2015-01-18 21:00","bb":33783,"cc":7106,"dd":0,"ee":6775,"ff":3319,"gg":6112,"hh":6344,"ii":3703,"jj":581,"kk":-232,"ll":66},{"ts":"2015-01-18 21:10","bb":34263,"cc":7105,"dd":0,"ee":6750,"ff":3327,"gg":6224,"hh":6228,"ii":3690,"jj":1101,"kk":-232,"ll":65}]}

这些是我用来连载的class:

[DataContract]
public class JsonClass{
    [DataMember]
    public List<aaDetails> aa{ get; set; }

}

 [DataContract]
public class aaDetails{
    [DataMember]
    public string ts { get; set; }
    [DataMember]
    public int? bb{ get; set; }
    [DataMember]
    public int? cc{ get; set; }
    [DataMember]
    public int? dd{ get; set; }
    [DataMember]
    public int? ee{ get; set; }
    [DataMember]
    public int? ff{ get; set; }
    [DataMember] 
  public int? gg{ get; set; }
        [DataMember]
        public int? hh{ get; set; }
        [DataMember]
        public int? i{ get; set; }
        [DataMember]
        public int? jj{ get; set; }
        [DataMember]
        public int? kk{ get; set; }
        [DataMember]
        public int? ll{ get; set; }
    }

如果我尝试使用来自 Web 服务的字符串结果,它不起作用,数据为 NULL:

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(JsonClass));

 MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(result));
 JsonClass data= (JsonClass)serializer.ReadObject(memStream);

如果我放入一个具有相同内容的字符串并使用它,它就可以工作(数据包含所有元素):

result = @"{""aa"":[{""ts"":""2015-01-18 21:00"",""bb"":33783,""cc"":7106,""dd"":0,""ee"":6775,""ff"":3319,""gg"":6112,""hh"":6344,""ii"":3703,""jj"":581,""kk"":-232,""ll"":66},{""ts"":""2015-01-18 21:10"",""bb"":34263,""cc"":7105,""dd"":0,""ee"":6750,""ff"":3327,""gg"":6224,""hh"":6228,""ii"":3690,""jj"":1101,""kk"":-232,""ll"":65}]}";
 DataContractJsonSerializer serializer = new 

 DataContractJsonSerializer(typeof(JsonClass));

 MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(result));
 JsonClass data= (JsonClass)serializer.ReadObject(memStream);

我也试过使用 NewtonsoftJson 库,结果是一样的:

var data= JsonConvert.DeserializeObject<JsonClass>(result);

我做错了什么? 非常感谢!

我检查了代码...我也遇到了同样的问题.. 我的 dataContract 代码中的 return 类型不正确

public string ts { get; set; } 

这里的 "ts" return 类型是字符串。但是,我怀疑它的日期时间。 连载参考click here to view json documentaion

这里是example for json similar like yours which helped me 希望我的评论对您有所帮助:)