c# JObject转换key值

博客介绍了对JObject对象的key值进行编辑的方法。JObject由多个key和value组成,可将英文key转换为中文。提供了完整代码实例,通过调用JobjKeyConvert方法,利用输入的JSON对象和新老key对应关系的Dictionary,实现key的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JObject对象有多个key和value组成,现需要对key值进行编辑,封装了一个方法,用于对key值的转换。

转换前JObject的值如下所示:

格式化后显示如下:

 

现将英文的key转换为中文,转换后效果:

 

完整代码实例:

JArray ja = JArray.Parse(strJson);
JObject jo = (JObject)ja.First;

Dictionary<string, string> propertyPairs = new Dictionary<string, string>();
propertyPairs.Add("CORPNAME", "公司名称");
propertyPairs.Add("BUSINESSSCOPE", "主营范围");
propertyPairs.Add("DEPARTMENT", "房产/土地资产的管理部门");
propertyPairs.Add("CORPNUM", "持有经营性房产的公司户数");
propertyPairs.Add("SYSTEMINFO", "房产信息系统运用情况");
propertyPairs.Add("COMMENTS", "备注");
propertyPairs.Add("CORPNO", "所属企业编码");
propertyPairs.Add("RESOURCE_ID", "数据源ID");
propertyPairs.Add("CREATE_USERNAME", "创建人");
propertyPairs.Add("CREATE_DATE", "创建日期");
propertyPairs.Add("OPERATE_USERNAME", "操作人");
propertyPairs.Add("OPERATE_DATE", "操作日期");
propertyPairs.Add("OPERATE_TYPE", "操作类型");
propertyPairs.Add("AUDIT_USERNAME", "审核人");
propertyPairs.Add("AUDIT_DATE", "审核日期");
propertyPairs.Add("SYNC_DATE", "同步日期");
propertyPairs.Add("REMIND_TYPE", "提醒类型");
propertyPairs.Add("ABNORMAL_HINTS", "异常提示");
propertyPairs.Add("ABNORMAL_REMIND", "告警提醒");

jo = JobjKeyConvert(jo, propertyPairs);


        /// <summary>
        /// JObject转换Key值
        /// </summary>
        /// <param name="inputObject">输入的JSON对象</param>
        /// <param name="propertyPairs">旧key与新key对应关系</param>
        /// <returns>转换后的JObject</returns>
        public static JObject JobjKeyConvert(JObject inputObject, Dictionary<string, string> propertyPairs)
        {
            var jObjectResult = new JObject();

            try
            {
                if (null != inputObject && 0 < inputObject.Count && null != propertyPairs && 0 < propertyPairs.Count)
                {
                    var lstKey = propertyPairs.Keys.ToList();
                    var lstObjectKey = inputObject.Properties().ToList();
                    for (int i = 0; i < lstObjectKey.Count(); i++)
                    {
                        var p = lstObjectKey[i];

                        //老的key
                        var sOldKey = lstKey.FirstOrDefault(k => 0 == string.Compare(p.Name, (k.IndexOf(",") != -1 ? k.Split(',')[0] : k), StringComparison.OrdinalIgnoreCase));
                        //新的key
                        var sNewKey = (!string.IsNullOrEmpty(sOldKey)) ? propertyPairs[sOldKey] : p.Name;

                        if (!propertyPairs.Values.Contains(sNewKey))
                        {
                            continue;
                        }

                        //当前循环的属性值
                        var singleValue = inputObject[p.Name];
                        jObjectResult.Add(sNewKey, singleValue);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("异常类型: \t" + ex.GetType());
                logger.Error("异常描述:\t" + ex.Message);
                logger.Error("异常方法:\t" + ex.TargetSite);
                logger.Error("异常堆栈:\t" + ex.StackTrace);
                jObjectResult = null;
            }
            return jObjectResult;
        }

 通过调用JobjKeyConvert方法,就可以将原来的key转为新的key,方法的两个参数分别是输入的JSON对象(JObject)和要转换的新老key对应关系(Dictionary)。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值