0

我使用DataContractJsonSerializer进行 Json 解析。请告诉我如何解析这个json:

{"response":[2,{"mid":95001,"date":1360173495,"out":0,"uid":32578013,"read_state":0,"title":"Head","body":"message"}, {"mid":95000,"date":1360173439,"out":0,"uid":32506752,"read_state":0,"title":" Theme ","body":"message2"}]}

我不明白我需要什么结构。我正在尝试写这个:

[DataContract]
internal class Message
{
    [DataMember]
    public int IntMember { get; set; } 

    [DataMember]
    public List<Messages> response { get; set; }        

    [DataContract]
    protected internal struct Messages
    {
        [DataMember]
        public string mid { get; set; }            
        [DataMember]
        public string uid { get; set; }            
        [DataMember]
        public string date { get; set; }           
        [DataMember]
        public string title { get; set; }     
        [DataMember]
        public string body { get; set; }       
    }
}

但这不起作用,因为一开始是 2。该怎么办?在解析之前删除这个数字,或者你可以直接忽略它?

4

2 回答 2

1

不幸的是,您似乎无法使用内置的序列化程序来获得所需的东西。该数组看起来像是包含一个整数作为其第一个元素,该元素指示数组的长度,这不是标准的 JSON,并且(正如您显然发现的那样)意味着该数组包含一个异构元素列表。

使用更专用的 JSON 库(如JSON.net )可能会让您更幸运

于 2013-02-07T21:36:24.987 回答
0

感谢问题已解决。借助正则表达式找到“不必​​要的数字”并删除

如果您需要号码本身:

@"(?<=response\D*)\d+"

如果您需要带逗号的数字:

@"(?<=response\D*)\d[^{]*"

然后替换

Replace(jsonString, RegEx);

感谢互联网,书 C# 5.0 和论坛 Cyber​​Forum

于 2013-02-08T18:13:57.977 回答