Json使用DataContractJsonSerializer进行解析

本文关键字:使用 DataContractJsonSerializer Json | 更新日期: 2023-09-27 17:58:10

Im使用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。该怎么办?在解析之前删除这个数字,或者你可以忽略它吗?

Json使用DataContractJsonSerializer进行解析

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

您可能会更幸运地使用像JSON.net 这样专门构建的JSON库

感谢问题得到解决。借助正则表达式查找"不必要的数字"并删除

如果你需要号码本身:

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

如果你需要一个带逗号的数字:

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

然后更换

Replace(jsonString, RegEx);

感谢互联网,书籍C#5.0和论坛CyberForum