c#将前端传来的Json解析成对象
描述:因工作中需要将C#中的Json字符串转换为对象,对此记录下。
解决办法:
1.前端传过来的Json字符串,OrderAppModuleJson即前端传递到后端的Json字符串
string strJson = entity.OrderAppModuleJson; //应用功能Json
2.变量 strJson 输出如下
strJson =
"[{\"AppID\":\"3aac341a-3404-4eb9-ab6a-3aae90e0a74e\",\"AppName\":\"政法系统\",\"AppAmount\":3333,\"data\":[{\"ModuleId\":\"8f1af52d-0bb7-4b3f-833d-c05c56a257fd\",\"ModuleName\":\"政法网站\",\"ModuleAmount\":10,\"subdata\":[{\"ModuleId\":\"88bb0290-64b6-4fb5-8d4d-b8fc194333d3\",\"ModuleName\":\"工作计划\",\"ModuleAmount\":\"10.0000\"},{\"ModuleId\":\"2e4336d3-bcab-4777-a791-e0f38c59057d\",\"ModuleName\":\"刑事案件\",\"ModuleAmount\":\"10.0000\"}]}]},{\"AppID\":\"923c341a-3404-4eb9-ab6a-3aae90e0a74e\",\"AppName\":\"订餐系统\",\"AppAmount\":4444,\"data\":[{\"ModuleId\":\"fb3f0517-cd8f-4dd5-91bc-0d8236683478\",\"ModuleName\":\"食堂管理\",\"ModuleAmount\":10,\"subdata\":[{\"ModuleId\":\"a206fe16-0a9b-4640-a121-0ab4ceb721c0\",\"ModuleName\":\"食堂管理\",\"ModuleAmount\":\"10.0000\"},{\"ModuleId\":\"9826c1ad-a606-40a3-b535-b808a6c822ea\",\"ModuleName\":\"餐厅管理\",\"ModuleAmount\":\"10.0000\"}]},{\"ModuleId\":\"1e2d67a2-70f6-4d24-a47f-a5c21024d406\",\"ModuleName\":\"人员管理\",\"ModuleAmount\":10,\"subdata\":[{\"ModuleId\":\"48869730-1432-4daf-a38d-23fa215500d6\",\"ModuleName\":\"人员信息维护\",\"ModuleAmount\":\"10.0000\"}]}]}]"
3.将上述Json进行Json验证,字符串如下
[{ "AppID": "3aac341a-3404-4eb9-ab6a-3aae90e0a74e", "AppName": "测试系统", "AppAmount": 3333, "data": [{ "ModuleId": "8f1af52d-0bb7-4b3f-833d-c05c56a257fd", "ModuleName": "测试网站", "ModuleAmount": 10, "subdata": [{ "ModuleId": "88bb0290-64b6-4fb5-8d4d-b8fc194333d3", "ModuleName": "测试计划", "ModuleAmount": "10.0000" }, { "ModuleId": "2e4336d3-bcab-4777-a791-e0f38c59057d", "ModuleName": "测试案件", "ModuleAmount": "10.0000" }] }] }, { "AppID": "923c341a-3404-4eb9-ab6a-3aae90e0a74e", "AppName": "订餐系统", "AppAmount": 4444, "data": [{ "ModuleId": "fb3f0517-cd8f-4dd5-91bc-0d8236683478", "ModuleName": "食堂管理", "ModuleAmount": 10, "subdata": [{ "ModuleId": "a206fe16-0a9b-4640-a121-0ab4ceb721c0", "ModuleName": "食堂管理", "ModuleAmount": "10.0000" }, { "ModuleId": "9826c1ad-a606-40a3-b535-b808a6c822ea", "ModuleName": "餐厅管理", "ModuleAmount": "10.0000" }] }, { "ModuleId": "1e2d67a2-70f6-4d24-a47f-a5c21024d406", "ModuleName": "人员管理", "ModuleAmount": 10, "subdata": [{ "ModuleId": "48869730-1432-4daf-a38d-23fa215500d6", "ModuleName": "人员信息维护", "ModuleAmount": "10.0000" }] }] }]View Code
4.现在将Json转换为对象,首先得创建对象:BuyAppModuleEntity
using System; using System.Collections.Generic; namespace Application.Entity { /// <summary> /// 描 述:应用功能Json /// </summary> public class BuyAppModuleEntity { /// <summary> /// 应用主键 /// </summary> public string AppID { get; set; } /// <summary> /// 应用名称 /// </summary> public string AppName { get; set; } /// <summary> /// 应用金额 /// </summary> public decimal? AppAmount { get; set; } /// <summary> /// 功能菜单数据集合 /// </summary> public List<data> data { get; set; } } /// <summary> /// 功能菜单主键 /// </summary> public class data { /// <summary> /// 功能菜单主键 /// </summary> public string ModuleId { get; set; } /// <summary> /// 功能菜单名称 /// </summary> public string ModuleName { get; set; } /// <summary> /// 功能菜单金额 /// </summary> public string ModuleAmount { get; set; } /// <summary> /// 功能子菜单数据集合 /// </summary> public List<subdata> subdata { get; set; } } /// <summary> /// 功能子菜单数据 /// </summary> public class subdata { /// <summary> /// 功能菜单主键 /// </summary> public string ModuleId { get; set; } /// <summary> /// 功能菜单名称 /// </summary> public string ModuleName { get; set; } /// <summary> /// 功能菜单金额 /// </summary> public string ModuleAmount { get; set; } } }View Code
5.将Json转换为BuyAppModuleEntity对象,其中需引用:using Newtonsoft.Json;
//循环解析应用和功能菜单数据 string strJson = entity.OrderAppModuleJson; //应用功能Json EnumerableQuery<BuyAppModuleEntity> jobInfoList = JsonConvert.DeserializeObject<EnumerableQuery<BuyAppModuleEntity>>(strJson); foreach (BuyAppModuleEntity jobInfo in jobInfoList) { //解析应用数据 string appId = jobInfo.AppID; string appName = jobInfo.AppName; decimal appAmount =Convert.ToDecimal(jobInfo.AppAmount); //解析功能菜单数据 List<data> jobData = jobInfo.data; foreach (data menu in jobData) { string moduleId = menu.ModuleId; string moduleName = menu.ModuleName; decimal moduleAmount = Convert.ToDecimal(menu.ModuleAmount); //解析功能子菜单数据 List<subdata> jobsubData = menu.subdata; foreach (subdata sub in jobsubData) { string subModuleId = sub.ModuleId; string subModuleName = sub.ModuleName; decimal subModuleAmount = Convert.ToDecimal(sub.ModuleAmount); } } }View Code
按上述操作,即可将Json字符串转换为对象。
优质内容筛选与推荐>>