Json 序列化为Dictionary
如下所示的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;
}
}
}
Json 序列化为Dictionary的更多相关文章
- Json序列化为对象方法
/// <summary>/// json 序列化为对象/// </summary>/// <typeparam name="T">对象类型&l ...
- json 序列化为数组
我们通常从后台取到json格式的数据到前台进行展示,在这个过程中可能户遇到一些json格式不是自己想要的格式,今天本人就遇到一个棘手的问题,最后在师傅的协助下才进行了正确格式的转换. 可以说最悲哀的莫 ...
- Js把Json序列化为Java接受的对象。
服务器端 Java定义 data class role(var name: String = "", var remark: String = "") data ...
- 将Dictionary序列化为json数据 、json数据反序列化为Dictionary
需要引用System.Web.Extensions dll类库 /// <summary> /// 将json数据反序列化为Dictionary /// </summary> ...
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
- 将 C# 枚举序列化为 JSON 字符串 基础理论
该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
- LINQ查询返回DataTable类型[轉]與将DataTable序列化为Json格式【轉】
(原文地址:http://xuzhihong1987.blog.163.com/blog/static/26731587201101853740294/) LINQ查询返回DataTable类型 在使 ...
随机推荐
- How to Choose the Best Way to Pass Multiple Models in ASP.NET MVC
Snesh Prajapati, 8 Dec 2014 http://www.codeproject.com/Articles/717941/How-to-Choose-the-Best-Way-to ...
- javascript总结2: Date对象
1 Date 对象 Date 对象用于处理日期与时间. Date()的方法很多,这里只总结工作必备的方法! 2 常用方法 创建个 Date 对象:const mydate=new Date(); &l ...
- HDU 3729 I'm Telling the Truth (二分匹配)
题意:给定 n 个人成绩排名区间,然后问你最多有多少人成绩是真实的. 析:真是没想到二分匹配,....后来看到,一下子就明白了,原来是水题,二分匹配,只要把每个人和他对应的区间连起来就好,跑一次二分匹 ...
- Java 错误结果Throw/Throws
目录 java处理异常方式 throw的作用 throws的作用 方法原理 举例 总结 个人实例 1.java处理异常方式 在java代码中如果发生异常的话,jvm会抛出 ...
- 编写高质量代码改善C#程序的157个建议——建议18:foreach不能代替for
建议18:foreach不能代替for 上一个建议中提到了foreach的两个优点:语法更简单,默认调用Dispose方法,所有我们强烈建议在实际的代码编写中更多的使用foreach.但是,该建议也有 ...
- delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法
delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program F ...
- wp8 与wp7.5图标规格说明
wp8 小图标 159*159 中图标 336*336 大图标 691*336 wp7.5 173*173
- vs2015+opencv3.3.1 实现 c++ 彩色高斯滤波器(Gaussian Smoothing, Gaussian Blur, Gaussian Filter)
//高斯滤波器 https://github.com/scutlzk#include <opencv2\highgui\highgui.hpp> #include <iostream ...
- Win10 的操作中心如果不见了
Win10 的操作中心如果不见了,可能是因为设置了不在任务栏显示操作中心,可以按照下面的设置来恢复. 1.单击开始菜单栏,打开设置: 2.选择个性化: 3.下图中,在左边选择"任务栏&quo ...
- oracle转义用单引号
参考:https://blog.csdn.net/learning_oracle_lh/article/details/46639507