我有一个web服务,可根据请求输出JSON字符串。
目前,我已经设置了一个接收类似
的课程[DataContract]
public class user_new_register
{
[DataMember(Name="ErrorStatus")]
public string ErrorStatus{ get; set; }
[DataMember(Name="ErrorMessages")]
public string []ErrorMessages { get; set; }
[DataMember(Name="UserID")]
public int UserID { get; set; }
}
我将字符串传递给服务器
var httpReq = (HttpWebRequest)HttpWebRequest.Create (new Uri (createUser));
httpReq.BeginGetResponse ((ar) => {
var request = (HttpWebRequest)ar.AsyncState;
using (var response = (HttpWebResponse)request.EndGetResponse (ar)) {
var s = response.GetResponseStream ();
这有效,“s”包含来自服务器ok的响应。我现在的问题是如何反序列化对[DataContract]类的回复。
我尝试了以下内容,但它不起作用
user_new_register register = new user_new_register ();
var stream = new MemoryStream ();
var serializer = new DataContractJsonSerializer (typeof(json.user_new_register));
var httpReq = (HttpWebRequest)HttpWebRequest.Create (new Uri (createUser));
httpReq.BeginGetResponse ((ar) => {
var request = (HttpWebRequest)ar.AsyncState;
using (var response = (HttpWebResponse)request.EndGetResponse (ar)) {
var s = response.GetResponseStream ();
stream = (JsonObject)JsonObject.Load (s);
register = (user_new_register)serializer.ReadObject (s);
这会在register = line
处编译但崩溃这里有任何帮助或建议:)
由于
保
答案 0 :(得分:0)
我建议使用json.net。大约一年前有一个branched version for Mono(版本4.0),但是我已经在一些以上的项目中使用它并且它是可靠的。
答案 1 :(得分:0)
我在MonoDroid项目中使用ServiceStack.Text。它有.Net最快的串行器。
我也喜欢将反序列化作为工厂方法放在我的DTO /模型中,如下所示:
using ServiceStack.Text;
public class user_new_register
{
public string ErrorStatus { get; set; }
public string[] ErrorMessages { get; set; }
public int UserID { get; set; }
public static user_new_register FromJson(string json)
{
return JsonSerializer.DeserializeFromString<user_new_register>(json);
}
}