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": ,
"data": [{
"ModuleId": "8f1af52d-0bb7-4b3f-833d-c05c56a257fd",
"ModuleName": "测试网站",
"ModuleAmount": ,
"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": ,
"data": [{
"ModuleId": "fb3f0517-cd8f-4dd5-91bc-0d8236683478",
"ModuleName": "食堂管理",
"ModuleAmount": ,
"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": ,
"subdata": [{
"ModuleId": "48869730-1432-4daf-a38d-23fa215500d6",
"ModuleName": "人员信息维护",
"ModuleAmount": "10.0000"
}]
}]
}]
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; }
} }
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);
}
}
}
按上述操作,即可将Json字符串转换为对象。
c#将前端传来的Json解析成对象的更多相关文章
- .net从网络接口地址获取json,然后解析成对象(一)
整理代码,今天遇到一个问题,就是从一个场景接口获取json,然后解析成对象.之前的时候都好好的,这次返回的json字符串里,由于字符编码的问题,格式上不能转换.一直以为是解析的过程编码有误,试了utf ...
- C# 将 Json 解析成 DateTable
#region 将 Json 解析成 DateTable /// /// 将 Json 解析成 DateTable. /// Json 数据格式如: /// {table:[{column1:1,co ...
- json转换成对象
在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...
- java后台解析前端传来的json
@RequestMapping(value = {"save"}) @ResponseBody public Result save(TBaseInterventionPlan m ...
- FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)
折腾小半天的问题,这里先感谢一下深圳的小伙子,远程帮我搞,虽然也没有搞出来==========FUCK 声明:Android开发下发生此异常,Java开发下并不会有这个问题 异常重现 简单说一下抛出异 ...
- 把复杂json解析成javabean
工具:fastjson1.2.9 用其他工具也行,比如json-lib.gson 用法都差不多 先来一段json { "page": { "pagenow": ...
- Android 利用 gson 将 json 转成 对象object 集合list
1.build.gradle 中引入gson compile 'com.google.code.gson:gson:2.8.5' 2.将后台返回的json数据转对象.List.时间格式与后台返回的时间 ...
- 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象
背景: 最近项目中使用SpringMVC,需要从前端接收JSON格式的请求,在后端自动转成一个与JSON格式相同的对象. 由于是一个老项目,Spring的版本是3.2.7. 问题1:POST or G ...
- python小练--使用正则表达式将json解析成dict
练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...
随机推荐
- atan和unwrap解卷绕
要计算一个系统相频特性,就要用到反正切函数,计算机中反正切函数规定,在一.二象限中的角度为0-pi,三四象限的角度为0--pi. 若一个角度从0变到2pi,但实际得到的结果是0-pi,再由-pi-0, ...
- 英国电信反悔华为是唯一真正的5G供应商
导读 英国电信反悔华为是唯一真正的5G供应商 英国电信的一位发言人表示,该公司目前正「从我们自 2006 年以来实施的网络架构原则中,从我们的 3G 和 4G 网络核心提取华为设备」. 英国电信已经不 ...
- MVC DropDownList
最近发现一个 MVC中绑定前台DropDownList , 并且设置默认选中项的简单方法. 直接上代码 方案一 Action: ViewData["goodsTypeList"] ...
- P2577 [ZJOI2005]午餐
题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以他们要吃的菜各 ...
- centos Install Docker
安装必备软件 $ yum -y install iptables iptables-services net-tools vim wget $ wget -P ~ https://github.com ...
- 在 Ali Kubernetes 系统中,我们这样实践混沌工程
在传统的软件测试中,我们通常通过一个给定的条件来判断系统的反馈,通过断言来判断是否符合预期,测试条件和结果通常比较明确和固定.而混沌工程,是通过注入一些“不确定”因素,象放进了一群淘气的猴子,在系统资 ...
- 自学Zabbix12.5 Zabbix命令-zabbix_proxy
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix12.5 Zabbix命令-zabbix_proxy 1. zabbix prox ...
- Surrounded Regions - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 https://leetcode.com/problems/surrounded-regions/ 注意点 边缘不算包围'O' 解法 解法一:dfs.找处 ...
- luogu1984 烧水问题 (找规律)
为了节省能量,我们会希望一个已经烧开了的水温度越低越好 那么可以得到结论,它要依次去碰当前温度从大到小的水 然后再把温度最高的烧开呗 可是直接模拟会T 稍微写一写大概能找到每次烧开花费能量的一个规律 ...
- Android手势监听类GestureDetector的使用
在使用自定义视图的时候,对触屏事件的处理是比不可少的,有能力的可以自己写代码处理,这样更加的灵活.如果不想这么麻烦,Android提供了一个手势监听类GestureDetector,可以供我们使用.G ...