从 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
希望我的评论对您有所帮助:)
我正在尝试序列化 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 希望我的评论对您有所帮助:)