Json 序列化为Dictionary

时间:2024-10-18 18:34:53

如下所示的json字符串中包含中文属性转换成英文属性

["sid":"dd1312","success":true,"data":{
"发票代码": "032001500XXX",
"发票号码": "25272XXX",
"开票日期": "2017年XX月XX日",
"校验码": "15922733756000XXXXXX",
"发票金额": "XXX.00",
"发票税额": "XXX.43",
"不含税金额": "XXX.57",
"受票方名称": "XXX",
"受票方税号": "XXXX",
"受票方地址、电话": "XXX",
"受票方开户行、账号": "XXX",
"销售方名称": "XXX",
"销售方税号": "913201043023368XXX",
"销售方地址、电话": "XXX",
"销售方开户行、账号": "XXX"
}]

现将json字符串转换成Dictionary类型

 /// <summary>
/// 将Json数据反序列化为Dictionary
/// </summary>
/// <param name="jsonData">json数据</param>
/// <returns></returns>
public Dictionary<string, object> JsonToDictionary(string jsonData)
{
//实例化JavaScriptSerializer类的新实例
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
try
{
//将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象
return javaScriptSerializer.Deserialize<Dictionary<string, object>>(jsonData);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

然后将中文属性转换成对应的英文属性

Dictionary<string,object> dic = JsonToDictionary(ress);
InvoiceAliOcr res = new InvoiceAliOcr();
res.data = new Ocr();
if (dic != null &&dic.ContainsKey("data"))
{
Dictionary<string, object> dataSet = (Dictionary<string, object>)dic["data"];
foreach (KeyValuePair<string, object> item in dataSet)
{
switch (item.Key)
{
case "发票代码":
res.data.fpdm = item.Value.ToString();
break;
case "发票号码":
res.data.fphm = item.Value.ToString();
break;
case "开票日期":
res.data.kprq = string.IsNullOrEmpty(item.Value.ToString()) ? "" : Convert.ToDateTime(item.Value.ToString()).ToString("yyyyMMdd");
break;
case "校验码":
res.data.code = item.Value.ToString();
break;
case "发票金额":
res.data.sumamount = item.Value.ToString();
break;
case "发票税额":
res.data.taxamount = item.Value.ToString();
break;
case "不含税金额":
res.data.notaxamount = item.Value.ToString();
break;
case "受票方名称":
res.data.gfMc = item.Value.ToString();
break;
case "受票方税号":
res.data.gfCode = item.Value.ToString();
break;
case "销售方名称":
res.data.sfMc = item.Value.ToString();
break;
case "销售方税号":
res.data.sfCode = item.Value.ToString();
break;
default:
break;
}
}
}