描述:因工作中需要将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解析成对象的更多相关文章

  1. .net从网络接口地址获取json,然后解析成对象(一)

    整理代码,今天遇到一个问题,就是从一个场景接口获取json,然后解析成对象.之前的时候都好好的,这次返回的json字符串里,由于字符编码的问题,格式上不能转换.一直以为是解析的过程编码有误,试了utf ...

  2. C# 将 Json 解析成 DateTable

    #region 将 Json 解析成 DateTable /// /// 将 Json 解析成 DateTable. /// Json 数据格式如: /// {table:[{column1:1,co ...

  3. json转换成对象

    在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...

  4. java后台解析前端传来的json

    @RequestMapping(value = {"save"}) @ResponseBody public Result save(TBaseInterventionPlan m ...

  5. FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)

    折腾小半天的问题,这里先感谢一下深圳的小伙子,远程帮我搞,虽然也没有搞出来==========FUCK 声明:Android开发下发生此异常,Java开发下并不会有这个问题 异常重现 简单说一下抛出异 ...

  6. 把复杂json解析成javabean

    工具:fastjson1.2.9 用其他工具也行,比如json-lib.gson 用法都差不多 先来一段json { "page": { "pagenow": ...

  7. Android 利用 gson 将 json 转成 对象object 集合list

    1.build.gradle 中引入gson compile 'com.google.code.gson:gson:2.8.5' 2.将后台返回的json数据转对象.List.时间格式与后台返回的时间 ...

  8. 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象

    背景: 最近项目中使用SpringMVC,需要从前端接收JSON格式的请求,在后端自动转成一个与JSON格式相同的对象. 由于是一个老项目,Spring的版本是3.2.7. 问题1:POST or G ...

  9. python小练--使用正则表达式将json解析成dict

    练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...

随机推荐

  1. codeforces659B

    Qualifying Contest CodeForces - 659B Very soon Berland will hold a School Team Programming Olympiad. ...

  2. BZOJ4864[BeiJing 2017 Wc]神秘物质——非旋转treap

    题目描述 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子.这 一天, 小诚刚从研究所得到了一块奇异的陨石样本, 便迫不及待地开始 ...

  3. BZOJ3772精神污染——可持久化线段树+出栈入栈序

    题目描述 兵库县位于日本列岛的中央位置,北临日本海,南面濑户内海直通太平洋,中央部位是森林和山地,与拥有关西机场的大阪府比邻而居,是关西地区面积最大的县,是集经济和文化于一体的一大地区,是日本西部门户 ...

  4. 【Linux】Centos配置ssh无密码登录

    [测试环境] 刚好重新做mgr就搞下吧,主要论文好长~想多做几遍再看~ master1 192.168.13.111 master2 192.168.13.112  master3  192.168. ...

  5. HDU1711-KMP-水题

    纯KMP,入门题,不知道读入挂加朴素匹配能不能过 #include <cstdio> #include <algorithm> #include <cstring> ...

  6. [hgoi#2019/2/17t1]million

    题目描述 面对格鲁的入侵,小黄人们要组建一支队伍,来抵御进攻,现在有编号为1 至n 的小黄人,任命编号为n 的队长,由其挑选队员,当然编号不是随便编的,每一个编号里都包含一个小黄人的个人信息,现在队长 ...

  7. A1032. Sharing

    To store English words, one method is to use linked lists and store a word letter by letter. To save ...

  8. 【LOJ#6281】数列分块5

    题目大意:维护一个有 N 个数组成的序列,支持查询区间元素和.区间元素向下取整的开方操作. 题解:由于序列中维护的数最大不超过整数的范围,而对于整数范围内的数来说,一个数在开方 5 次及以上时,结果不 ...

  9. asp.net C#压缩打包文件例子

    /// <summary> /// 压缩和解压文件 /// </summary> public class ZipClass { /// <summary> /// ...

  10. mysql数据库user表host字段的%问题

    搜索: mysql数据库user表host字段的%问题 连接:http://blog.csdn.net/xiaomengh/article/details/48706149 在mysql数据库中,使用 ...