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 ...
随机推荐
- Java之枚举举例
package enumdemo; /** * 枚举类 */ public enum MAPPER { // 实例 ELEMENT_NAME("mapper"), ATTRIBUT ...
- 黄金Corner
春水初生 春林初盛 春风十里 你在哪里
- Python的单向链表实现
思路 链表由节点组成,先规定节点(Node),包含data和指向下个节点的next 初始化 data当然就是传入的data了,next指向None 添加 分两种情况: 链表为空,那么头节点和尾节点都指 ...
- Windows Server 2008配置Network Load Balancing(服务群集)
最近配置SharePoint 2013 WFE 时,客户提到要让多台WFE能load balance,于是研究了下Network Load Balancing. 当把一台服务器 ...
- LoadRunner回放乱码
乱码的原因和服务器字符集编码相关,默认LR是gbk解码,如果服务器是utf8,那么需要改为utf8解码,这样中文就显示正常了. 通过查看源码,可以知道服务器的编码方式:<meta charset ...
- bzoj4817/luogu3703 树点涂色 (LCT+dfs序+线段树)
我们发现,这个染色的操作他就很像LCT中access的操作(为什么??),然后就自然而然地想到,其实一个某条路径上的颜色数量,就是我们做一个只有access操作的LCT,这条路径经过的splay的数量 ...
- 01---JMS与消息中间件的基本概念
JMS消息服务介绍和使用场景 什么是JMS JMS : Java Message Service(Java消息服务),Java平台中关于面向消息中间件的接口. 重点在于接口,接口就意味着与JDBC类似 ...
- apk的安装删除
1,签名: java -jar signapk.jar platform.x509.pem platform.pk8 DownloadProvider.apk DownloadProvider-sig ...
- NOIP2018普及组模拟赛
向老师给的模拟赛,还没普及组难... 题目在洛谷团队里. 第一试三道水题,我46分钟就打完了,然后就AK了. 第二试一看,除了第二题要思考一段时间之外,还是比较水的,但是我得了Rank倒1,115分. ...
- java -server 和 -client 的不同,及 java -server 时抛错原因
在dos窗口运行:java -server Error: missing `server' JVM at `C:\Program Files\Java\jre7\bin\server\jvm.dll' ...