Json通過Newtonsoft.Json.dll轉換數據

  • 通過解析Json的要領
原則:

1.反序列化Json字符串轉化爲JObject對象
2.然後就是JObject和JArray的轉換,JArry 一般是相同數據數組需要循環遍歷,JObject是對象獲取值信息

  1. 命名空間的引用

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

  1. Json文本數據 jsonData.json(/Bin/Debug/Data/ jsonData.json)
  {
  "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
}
  1. 讀取Json數據(注意亂碼)
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
  1. 轉換數據爲對象
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;
}
  1. 參考網址

夜闌聽雨
夜闌聽雨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章