一、需要解析的示例数据
[ { "IDNum": "身份证号", "FullName": "姓名", "SexualityName": "性别(男、女)", "RegistAddress": "户籍地址", "RealAddress": "实际居住地址", "CellPhone": "手机号码", "Telephone": "电话号码", "JobStatus": "工作状况(待业、已就业)", "DegreeLevel": "文化程度(大专、本科)", "MarryStatus": "婚姻状况(已婚、未婚)", "EconomyStatus": "经济状况(无收入、5000-10000)", "LiveStatus": "居住状况(租房、已购房)", "CreditRecord": [ { "CODE": "失信行为编码(作为唯一标识)", "GLJD": "管理阶段(申请审核、分配供应、供后使用、退出管理)", "XWFL": "行为分类(隐瞒虚报、违约行为 )", "HGXM": "涵盖项目(廉租住房、公用租赁住房、共有产权保障住房)", "RDYJ": "认定依据", "FULLTEXT": "信用行为描述:", "SHORTTEXT": "信用行为简称", "PJBZ": "评价标准(严重失信、一般失信)", "YXQX": "有效期限", "XYZT": "信用主体", "CJDX": "惩戒对象" }, { "CODE": "BFSD_12547885", "GLJD": "申请审核", "XWFL": "隐瞒虚报", "HGXM": "廉租住房、公共租赁住房、共有产权保障住房", "RDYJ": "认定依据", "FULLTEXT": "提供伪造、虚假身份证明(状况):", "SHORTTEXT": "伪造、虚假身份证明", "PJBZ": "严重失信行为", "YXQX": "5", "XYZT": "审核对象", "CJDX": "申请人代表、涉及的申请人员" } ] }, { "IDNum": "10010", "FullName": "李四", "SexualityName": "男", "RegistAddress": "XXXX", "RealAddress": "XXX", "CellPhone": "135", "Telephone": "021-111", "JobStatus": "待业", "DegreeLevel": "本科", "MarryStatus": "未婚", "EconomyStatus": "无收入", "LiveStatus": "与父母同住", "CreditRecord": [] } ]
二、解析代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xml; using Newtonsoft.Json.Linq; namespace Common { public class ZFBZ_Util { class ZFBZ_Credit { public int ID { get; set; } public string Code { get; set; } public string Gljd { get; set; } public string Xwfl { get; set; } public string Hgxm { get; set; } public string Rdyj { get; set; } public string FullText { get; set; } public string ShortText { get; set; } public string Pjbz { get; set; } public int Yxqx { get; set; } public string Xyzt { get; set; } public string Cjdx { get; set; } } class ZFBZ_Subject { public int ID { get; set; } public string IDNum { get; set; } public string FullName { get; set; } public string SexualityName { get; set; } public string RegistAddress { get; set; } public string RealAddress { get; set; } public string CellPhone { get; set; } public string Telephone { get; set; } public string JobStatus { get; set; } public string DegreeLevel { get; set; } public string MarryStatus { get; set; } public string EconomyStatus { get; set; } public string LiveStatus { get; set; } public List<ZFBZ_Credit> CreditRecord { get; set; } } private List<ZFBZ_Subject> AnalyzeXml(string xml) { //<root> // <Subject> // <IDNum>身份证号</IDNum> // <FullName>姓名</FullName> // <SexualityName>性别(男、女)</SexualityName> // <RegistAddress>户籍地址</RegistAddress> // <RealAddress>实际居住地址</RealAddress> // <CellPhone>手机号码</CellPhone> // <Telephone>电话号码</Telephone> // <JobStatus>工作状况(待业、已就业)</JobStatus> // <DegreeLevel>文化程度(大专、本科)</DegreeLevel> // <MarryStatus>婚姻状况(已婚、未婚)</MarryStatus> // <EconomyStatus>经济状况(无收入、5000-10000)</EconomyStatus> // <LiveStatus>居住状况(租房、已购房)</LiveStatus> // <CreditRecords> // <CreditRecord> // <CODE>失信行为编码(作为唯一标识)</CODE> // <GLJD>管理阶段(申请审核、分配供应、供后使用、退出管理)</GLJD> // <XWFL>行为分类(隐瞒虚报、违约行为 )</XWFL> // <HGXM>涵盖项目(廉租住房、公用租赁住房、共有产权保障住房)</HGXM> // <RDYJ>认定依据</RDYJ> // <FULLTEXT>信用行为描述</FULLTEXT> // <SHORTTEXT>信用行为简称</SHORTTEXT> // <PJBZ>评价标准(严重失信、一般失信)</PJBZ> // <YXQX>有效期限</YXQX> // <XYZT>信用主体</XYZT> // <CJDX>惩戒对象</CJDX> // </CreditRecord> // <CreditRecord> // <CODE>BFSD_12547885</CODE> // <GLJD>申请审核</GLJD> // <XWFL>隐瞒虚报</XWFL> // <HGXM>廉租住房、公用租赁住房、共有产权保障住房</HGXM> // <RDYJ>认定依据</RDYJ> // <FULLTEXT>提供伪造、虚假身份证明(状况)</FULLTEXT> // <SHORTTEXT>伪造、虚假身份证明</SHORTTEXT> // <PJBZ>严重失信行为</PJBZ> // <YXQX>5</YXQX> // <XYZT>审核对象</XYZT> // <CJDX>申请人代表、涉及的申请人员</CJDX> // </CreditRecord> // </CreditRecords> // </Subject> // <Subject> // <IDNum>511023198000000000000</IDNum> // <FullName>李四</FullName> // <SexualityName>男</SexualityName> // <RegistAddress>户籍地址</RegistAddress> // <RealAddress>实际居住地址</RealAddress> // <CellPhone>1354444</CellPhone> // <Telephone>021-14521</Telephone> // <JobStatus>待业</JobStatus> // <DegreeLevel>本科</DegreeLevel> // <MarryStatus>未婚</MarryStatus> // <EconomyStatus>无收入</EconomyStatus> // <LiveStatus>与父母同住</LiveStatus> // <CreditRecords></CreditRecords> // </Subject> //</root> XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); //解析XML数据 ZFBZ_Subject subject = null; List<ZFBZ_Subject> list = new List<ZFBZ_Subject>(); XmlNodeList nodes = doc.SelectSingleNode("root").SelectNodes("Subject"); foreach (XmlNode node in nodes) { subject = new ZFBZ_Subject(); subject.ID = 0; subject.IDNum = node.SelectSingleNode("IDNum").InnerText; subject.FullName = node.SelectSingleNode("FullName").InnerText; subject.SexualityName = node.SelectSingleNode("SexualityName").InnerText; subject.RegistAddress = node.SelectSingleNode("RegistAddress").InnerText; subject.RealAddress = node.SelectSingleNode("RealAddress").InnerText; subject.CellPhone = node.SelectSingleNode("CellPhone").InnerText; subject.Telephone = node.SelectSingleNode("Telephone").InnerText; subject.JobStatus = node.SelectSingleNode("JobStatus").InnerText; subject.DegreeLevel = node.SelectSingleNode("DegreeLevel").InnerText; subject.MarryStatus = node.SelectSingleNode("MarryStatus").InnerText; subject.EconomyStatus = node.SelectSingleNode("EconomyStatus").InnerText; subject.LiveStatus = node.SelectSingleNode("LiveStatus").InnerText; XmlNodeList items = node.SelectSingleNode("CreditRecords").SelectNodes("CreditRecord"); if (items != null && items.Count > 0) { ZFBZ_Credit credit = null; List<ZFBZ_Credit> credits = new List<ZFBZ_Credit>(); foreach (XmlNode item in items) { credit = new ZFBZ_Credit(); credit.ID = 0; credit.Code = item.SelectSingleNode("CODE").InnerText; credit.Gljd = item.SelectSingleNode("GLJD").InnerText; credit.Xwfl = item.SelectSingleNode("XWFL").InnerText; credit.Hgxm = item.SelectSingleNode("HGXM").InnerText; credit.Rdyj = item.SelectSingleNode("RDYJ").InnerText; credit.FullText = item.SelectSingleNode("FULLTEXT").InnerText; credit.ShortText = item.SelectSingleNode("SHORTTEXT").InnerText; credit.Pjbz = item.SelectSingleNode("PJBZ").InnerText; credit.Yxqx = int.Parse(item.SelectSingleNode("YXQX").InnerText); credit.Xyzt = item.SelectSingleNode("XYZT").InnerText; credit.Cjdx = item.SelectSingleNode("CJDX").InnerText; credits.Add(credit); } subject.CreditRecord = credits; } list.Add(subject); } return list; } public string ImportFromXml(string info_id, string xml) { List<ZFBZ_Subject> list = AnalyzeXml(xml); return ""; } private List<ZFBZ_Subject> AnalyzeJson(string json) { ZFBZ_Subject subject = null; List<ZFBZ_Subject> list = new List<ZFBZ_Subject>(); JArray obj = JArray.Parse(json); //遍历第一层数据 foreach (JObject item in obj.Children()) { subject = new ZFBZ_Subject(); subject.ID = 0; subject.IDNum = item["IDNum"].ToString(); subject.FullName = item["FullName"].ToString(); subject.SexualityName = item["SexualityName"].ToString(); subject.RegistAddress = item["RegistAddress"].ToString(); subject.RealAddress = item["RealAddress"].ToString(); subject.CellPhone = item["CellPhone"].ToString(); subject.Telephone = item["Telephone"].ToString(); subject.JobStatus = item["JobStatus"].ToString(); subject.DegreeLevel = item["DegreeLevel"].ToString(); subject.MarryStatus = item["MarryStatus"].ToString(); subject.EconomyStatus = item["EconomyStatus"].ToString(); subject.LiveStatus = item["LiveStatus"].ToString(); JToken token = item["CreditRecord"]; ZFBZ_Credit credit = null; List<ZFBZ_Credit> credits = new List<ZFBZ_Credit>(); //第二层循环 foreach (JObject itemInner in token.Children()) { credit = new ZFBZ_Credit(); credit.ID = 0; credit.Code = itemInner["CODE"].ToString(); credit.Gljd = itemInner["GLJD"].ToString(); credit.Xwfl = itemInner["XWFL"].ToString(); credit.Hgxm = itemInner["HGXM"].ToString(); credit.Rdyj = itemInner["RDYJ"].ToString(); credit.FullText = itemInner["FULLTEXT"].ToString(); credit.ShortText = itemInner["SHORTTEXT"].ToString(); credit.Pjbz = itemInner["PJBZ"].ToString(); credit.Yxqx = int.Parse(itemInner["YXQX"].ToString()); credit.Xyzt = itemInner["XYZT"].ToString(); credit.Cjdx = itemInner["CJDX"].ToString(); credits.Add(credit); } subject.CreditRecord = credits; list.Add(subject); } return list; } public string ImportFromJson(string info_id, string json) { List<ZFBZ_Subject> list = AnalyzeJson(json); return ""; } } }