C# 将JSON反序列化到monodroid上的类
我有一个Web服务,可以根据请求输出JSON字符串 目前,我已经设置了一个类来接收如下内容C# 将JSON反序列化到monodroid上的类,c#,json,xamarin.android,C#,Json,Xamarin.android,我有一个Web服务,可以根据请求输出JSON字符串 目前,我已经设置了一个类来接收如下内容 [DataContract] public class user_new_register { [DataMember(Name="ErrorStatus")] public string ErrorStatus{ get; set; } [DataMember(Name="ErrorMessages")] public string []ErrorMessages { g
[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 ();
我像这样将字符串传递给服务器
[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);
这将编译,但在寄存器=行崩溃
如有任何帮助或建议,将不胜感激:)
谢谢
Paul我建议使用json.net。有一个大约一年前的版本(版本4.0),但我已经在多个项目中使用过它,而且它是可靠的 我在MonoDroid项目中使用。它拥有.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);
}
}
使用ServiceStack.Text;
公共类用户\u新建\u寄存器
{
公共字符串错误状态{get;set;}
公共字符串[]错误消息{get;set;}
public int UserID{get;set;}
来自json的公共静态用户\新\寄存器(字符串json)
{
返回JsonSerializer.DeserializeFromString(json);
}
}
谢谢-没有Json.net有什么方法可以做到这一点吗?