我使用 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开头。该怎么办?在解析之前删除这个号码,或者你可以清楚地忽略它?
答案 0 :(得分:1)
不幸的是,您似乎无法使用内置的序列化程序来获取所需内容。该数组看起来像是包含一个整数作为其第一个元素,表示数组的长度,这不是标准的JSON,并且(正如您已经发现的那样)意味着该数组包含异构元素的列表。
对于像JSON.net
这样的更专用的JSON库,您可能会更幸运答案 1 :(得分:0)
感谢问题解决了。在正则表达式的帮助下找到“不必要的数字”并删除
如果你需要这个数字:
@"(?<=response\D*)\d+"
如果您需要带逗号的数字:
@"(?<=response\D*)\d[^{]*"
然后替换
Replace(jsonString, RegEx);
感谢互联网,预订C#5.0和论坛CyberForum