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字符串转换为对象。

posted on 2018-02-03 23:12 永不言弃! 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值