原则:
1.反序列化Json字符串转化为JObject对象
2.然后就是JObject和JArray的转换,JArry 一般是相同数据数组需要循环遍历,JObject是对象获取值信息
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
{
"msg": "请求成功",
"data": {
"threeCheck": [
{
"createBy": "admin",
},
{
"createBy": "admin",
},
{
"createBy": "admin",
},
{
"createBy": "admin",
},
{
"createBy": "admin",
},
{
"createBy": "admin",
}
],
"handoverSafe": [
{
"createBy": "admin",
},
{
"createBy": "admin",
}
],
"handoverTechnology": [
{
"createBy": "admin",
"updateDate": 1518055614047,
},
{
"createBy": "admin",
"updateDate": 1518055614049,
}
],
"record": {
"reportId": 865,
"remark": "无",
"delFlag": 0,
"users": [
{
"recordId": 25,
"unitName": "青海送变电工程有限公司",
},
{
"recordId": 25,
"unitName": "青海送变电工程有限公司",
}
],
"controlMeasure": "无",
"createBy": "f252cb22f38dbd7ddc3a0bd1b5671a0d",
"dayRiskLevel": 3,
"measures": [
{
"recordId": 25,
},
{
"recordId": 25,
}
]
"supplementaryControlMeasures": "无",
"id": 25,
"constructionDate": "2019-08-21",
"status": 1,
"createDate": 1566373544000
},
"report": {
"teamName": "基础1班",
"checkes": [
{
"reportId": 865,
},
{
"reportId": 865,
}
],
"userInfos": [
{
"unitName": "四川省升辉建筑安装工程有限公司",
},
{
"unitName": "四川省升辉建筑安装工程有限公司",
},
{
"unitName": "四川省升辉建筑安装工程有限公司",
}
],
"ticketId": 81,
"status": 3
},
"handoverTask": [
{
"createBy": "admin",
}
]
},
"oK": false,
"status": 0
}
try
{
string pJsonData = string.Empty;
string pJsonPath = $"{Environment.CurrentDirectory}/Data/jsonData.json";
pJsonData = ReadJsonFile(pJsonPath, Encoding.GetEncoding("GB2312"));
if (string.IsNullOrEmpty(pJsonData))
{
return null;
}
TicketRecordModel pTicketRecordModel = ParseTicketRecordModelFromJSon(pJsonData);
return pTicketRecordModel;
}
catch (Exception e)
{
CommonBasic.Log.NSCLog.AddErrorLog(e);
return null;
}
#region 读取Json文件
public static string ReadJsonFile(string Path, System.Text.Encoding encoding)
{
string s = string.Empty;
if (!System.IO.File.Exists(Path))
{
s = "不存在相应的目录";
}
else
{
Encoding pEncoding = encoding == null ? Encoding.GetEncoding("UTF-8") : encoding;
StreamReader f2 = new StreamReader(Path, pEncoding);//GB2312
s = f2.ReadToEnd();
f2.Close();
f2.Dispose();
}
return s;
}
#endregion
try
{
if (vJson == null || vJson == "")
{
return null;
}
TicketRecordModel pTicketRecordMode = new TicketRecordModel();
if (!(JsonConvert.DeserializeObject(vJson) is JObject jobject))
{
return null;
}
#region Json数据解析三种方式
/*
原则:
1.反序列化Json字符串转化为JObject对象
2.然后就是JObject和JArray的转换,JArry 一般是相同数据数组需要循环遍历,JObject是对象获取值信息
*/
JObject pJObject = JsonConvert.DeserializeObject(vJson) as JObject;
string pMessage = pJObject.ContainsKey("msg") ? pJObject["msg"]?.ToString() : null;
string pStatus = pJObject.ContainsKey("status") ? pJObject["status"]?.ToString() : null;
if (pMessage == "请求成功")
{
JObject pDataJObject = JObject.Parse(pJObject["data"].ToString());
JArray pThreeCheckArray = JArray.Parse(pDataJObject["threeCheck"].ToString());
//①
foreach (var pThreeCheck in pThreeCheckArray)
{
JObject pThreeCheckObject = JObject.Parse(pThreeCheck.ToString());
if (pThreeCheckObject.ContainsKey("createBy"))
{
}
if (pThreeCheck["createBy"] != null)
{
}
}
//②
foreach (JObject pThreeCheck in pThreeCheckArray)
{
//①
if (pThreeCheck.ContainsKey("createBy"))
{
}
//②
if (pThreeCheck["createBy"] != null)
{
}
}
//③
foreach (JToken pThreeCheck in pThreeCheckArray)
{
//①
if (pThreeCheck["createBy"] != null)
{
}
JObject pThreeCheckObject = JObject.Parse(pThreeCheck.ToString());
//②
if (pThreeCheckObject.ContainsKey("createBy"))
{
}
//③
if (pThreeCheckObject["createBy"] != null)
{
}
}
}
#endregion
#region 获取培训信息
JArray pDatathreeCheck = JArray.Parse(jobject["data"]["threeCheck"].ToString());
foreach (JObject threeCheck in pDatathreeCheck)
{
}
JArray pDatatHandoverSafe = JArray.Parse(jobject["data"]["handoverSafe"].ToString());
foreach (JObject handoverSafe in pDatatHandoverSafe)
{
}
JArray pHandoverTechnology = JArray.Parse(jobject["data"]["handoverTechnology"].ToString());
foreach (JObject handoverTechnology in pHandoverTechnology)
{
}
#endregion
#endregion
}
catch (Exception ex)
{
return;
}