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,(正如您明显发现的)意味着数组包含一个异构元素列表。
您可能会更幸运地使用像JSON.net 这样专门构建的JSON库
感谢问题得到解决。借助正则表达式查找"不必要的数字"并删除
如果你需要号码本身:
@"(?<=response'D*)'d+"
如果你需要一个带逗号的数字:
@"(?<=response'D*)'d[^{]*"
然后更换
Replace(jsonString, RegEx);
感谢互联网,书籍C#5.0和论坛CyberForum