描述:因工作中需要将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. python中lambda表达式中自由变量的坑,因为for循环结束了 变量还保存着,详见关于for循环的随笔

    http://blog.csdn.net/u010949971/article/details/70045537

  2. i3 窗口管理器使 Linux 更美好

    导读 Linux(和一般的开源软件)最美好的一点是自由 —— 可以在不同的替代方案中进行选择以满足我们的需求. 我使用 Linux 已经很长时间了,但我从来没有对可选用的桌面环境完全满意过.直到去年, ...

  3. Maven概述(一)

    Maven是什么? Apache Maven is a software project management and comprehension tool. Based on the concept ...

  4. MT【53】对数平均做数列放缩

    [从最简单的做起]--波利亚 请看下面三道循序渐进不断加细的题. 评:随着右边的不断加细,解决问题的方法也越来越"高端".当然最佳值$ln2$我们可以用相对 容易的方法来证明: $ ...

  5. Domino 邮箱服务器接收不存在的邮箱账号的邮件

    背景: domino邮箱服务器需要设置多个邮件账号邮件转到同一个邮箱账号. 比如:现在没有了 abc@mail.com 的邮箱账号.但是当用户发邮件给它的时候就发给Support@mail.com 原 ...

  6. luogu3628 特别行动队 (斜率优化dp)

    推出来式子以后斜率优化水过去就完事了 #include<cstdio> #include<cstring> #include<algorithm> #include ...

  7. C#/.NET转Java学习笔记

    大学研究了三年的.Net,由于偶然的机会,拿到IBM的Java web实习offer,所以决定转行搞Java(综合了校招情况.发展前景和其他各种因素). 下面是我在学习Java web的一些学习笔记( ...

  8. 转载:C++类内存分布

    本文转自:http://www.cnblogs.com/jerry19880126/p/3616999.html,原文写的非常好,从中学到了虚继承的概念,也学会了用VS查看内存分布. 说下C++内存分 ...

  9. JS循环语句!

    <1> for(1.初始值(初始值只有一次):2.判断条件:4.状态改变){ 3.执行语句: //如果判断条件为true,则进入死循环:不设执行语句浏览器会未响应: } <2> ...

  10. [luogu2114][起床困难综合症]

    luogu2114 思路 因为位运算对于每一位是独立的,所以对每一位都对这n个数进行操作,然后观察最后得出的是1还是0.并且保证每一位拼起来之后要比m小. 代码 #include<cstdio& ...