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

优质内容筛选与推荐>>
1、pthread_cond_signal和pthread_cond_wait使用范例
2、初学linux --命令
3、javascript 基础 --- 零散知识汇总(持续更新)
4、volatile
5、K-th Number POJ - 2104


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn