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)。