正在将字符串解析为对象C#

本文关键字:对象 字符串 | 更新日期: 2023-09-27 17:59:11

我正在尝试将字符串解析为对象

这是绳子;

string result = {"Status":true,"StatusCode":"OK","MessageList":[[1,1,"admin@....net","Google Inc","'/Date(1469685360000)'/","Seatle","Another String"]]}

这是一节课;

[DataContract]
    public class Login
    {
        [DataMember]
        public bool Status { get; set; }
        [DataMember]
        public string StatusCode { get; set; }
        [DataMember]
        public string[] MessageList { get; set; }
    }

这是代码;

Login asd = new JavaScriptSerializer().Deserialize<Login>(result);

我是这个领域的新手,所以我不太知道如何将其编码为

正在将字符串解析为对象C#

您的"String"实际上不是String。您应该转义引号,可以使用反斜杠,也可以使用带有双双引号的here字符串,就像这样;

 @"{""Status"":true,""StatusCode"":""OK"",""MessageList"":[[1,1,""admin@....net"",""Google Inc"",""'/Date(1469685360000)'/"",""Seatle"",""Another String""]]}"

您的数据格式也与您的类不匹配,您已将MessageList声明为字符串数组,而您的数据似乎是包含另一个数组的数组。。。

JSON字符串中的MessageList不是字符串数组,而是字符串数组。将类定义中的MessageList属性更新为public string[][] MessageList { get; set; }
[DataContract]
public class Login
{
    [DataMember]
    public bool Status { get; set; }
    [DataMember]
    public string StatusCode { get; set; }
    [DataMember]
    public string[][] MessageList { get; set; }
}

现在,反序列化应该可以工作了。

static void Main(string[] args)
{
    string result = "{'"Status'":true,'"StatusCode'":'"OK'",'"MessageList'":[[1,1,'"admin@....net'",'"Google Inc'",'"''/Date(1469685360000)''/'",'"Seatle'",'"Another String'"]]}";
    Login asd = new JavaScriptSerializer().Deserialize<Login>(result);
    Console.ReadLine();
}

尝试

Login data = Json.Decode<Login>(result);   

看看msdn和这篇文章。