Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将JSON反序列化到monodroid上的类_C#_Json_Xamarin.android - Fatal编程技术网

C# 将JSON反序列化到monodroid上的类

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

我有一个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 ();
我像这样将字符串传递给服务器

[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有什么方法可以做到这一点吗?