转自:http://www.cnblogs.com/YUTOUYUWEI/p/5585863.html

在开发过程中,有时候需要将json字符串转为字典类型,反之亦然,通常采用.Net的开源类库Newtonsoft.Json进行序列化,这里我也是采用这个,不过我更喜欢写扩展方法方便在项目的调用。

首先新建一个扩展类JsonExtensions(类名自己按照自己喜好定义):

 public static class JsonExtensions{/// <summary>/// 将字典类型序列化为json字符串/// </summary>/// <typeparam name="TKey">字典key</typeparam>/// <typeparam name="TValue">字典value</typeparam>/// <param name="dict">要序列化的字典数据</param>/// <returns>json字符串</returns>public static string SerializeDictionaryToJsonString<TKey, TValue>(Dictionary<TKey, TValue> dict){if (dict.Count == 0)return "";string jsonStr = JsonConvert.SerializeObject(dict);return jsonStr;}/// <summary>/// 将json字符串反序列化为字典类型/// </summary>/// <typeparam name="TKey">字典key</typeparam>/// <typeparam name="TValue">字典value</typeparam>/// <param name="jsonStr">json字符串</param>/// <returns>字典数据</returns>public static Dictionary<TKey, TValue> DeserializeStringToDictionary<TKey, TValue>(string jsonStr){if (string.IsNullOrEmpty(jsonStr))return new Dictionary<TKey, TValue>();Dictionary<TKey, TValue> jsonDict = JsonConvert.DeserializeObject<Dictionary<TKey, TValue>>(jsonStr);return jsonDict;}}

 接下来就调用这两个扩展方法,看看是否可行,这里我写的是一个单元测试,方便用于测试,写的一般,大家可以自行回去测试:

[TestClass] public class DictionaryTest{[TestMethod]public void Can_Serialize_Deserialize(){Dictionary<string, string> paramDictionary = new Dictionary<string, string>();paramDictionary.Add("one", "productName");paramDictionary.Add("two", "productColor");paramDictionary.Add("three", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));paramDictionary.Add("four", DateTime.Now.AddDays(5).ToString("yyyy-MM-dd HH:mm:ss"));string jsonStr = JsonExtensions.SerializeDictionaryToJsonString<string, string>(paramDictionary);var jsonDict = JsonExtensions.DeserializeStringToDictionary<string, string>(jsonStr);List<string> dict1 = new List<string>();foreach (var item in paramDictionary){dict1.Add(paramDictionary[item.Key]);}List<string> dict2 = new List<string>();foreach (var item in jsonDict){dict2.Add(jsonDict[item.Key]);}int intersect = dict1.Intersect(dict2).Count(); // 交集int except = dict1.Except(dict2).Count(); // 差集int union = dict1.Union(dict2).Count(); // 并集Assert.AreEqual(4, intersect);Assert.AreEqual(0, except);Assert.AreEqual(4, union);Assert.AreEqual("productName", dict2[0]);Assert.AreEqual("productColor", dict2[1]);Assert.AreEqual(4, dict2.Count);}}

输出结果:

转载于:https://www.cnblogs.com/Joetao/articles/5851502.html

json字符串和字典类型的相互转换(转载)相关推荐

  1. python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。

    注意:本篇所讲的文件操作,都是对后缀为.txt..json文件进行的操作. 1.json其实就是一个文件的格式,像.txt一样,json也是一个纯文本文件.与.txt不同的是,json常用来存放有键值 ...

  2. iOS开发JSON字符串和字典互转

    1.相关属性简述 NSJSONReadingOptions读取属性: typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) {NSJSONReadi ...

  3. json和python中字典的区别和联系_Python中 json字符串和字典的区别

    一.前言 工作或学习中,相信很多同学跟我一样,对于json字符串和字典两者的概念一直摸棱两可.emmm,既然不懂,那我们查资料并整理下来. 二.json字符串和字典的区别 简单粗暴地说,字典是一种数据 ...

  4. json字符串与java对象的相互转换(jackson)

    1.java对象转换为json字符串 package com.chichung.json;import com.fasterxml.jackson.core.JsonProcessingExcepti ...

  5. Jackson第一篇【JSON字符串、实体之间的相互转换】

    来源:http://blog.csdn.net/songyongfeng/article/details/6932655 既然你看到这篇文章相信你已经了解JSON的好处了,那么废话不多说直接进入主题. ...

  6. 记录一次和朋友聊天遇到的面试题 ip地址字符串和long类型的相互转换 都是参考了别人的代码 加了一些个人理解的总结

    package zyr.demo02;import java.util.*;/*** ip地址和long的相互转换*/ public class Test{/*ip->long:*1.将ip地址 ...

  7. python中日期字符串与datetime类型的相互转换

    文章目录 背景 代码 1. `datetime`如何转换成日期字符串 2. 日期字符串如何转换成`datetime` 背景 我们在平常写代码的过程中最常遇到的就是形如2021-05-12,2021/0 ...

  8. Python解析json字符串,json字符串用法

    json数据简介 json数据是一个轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使json称为理想的数据交换语言,易于人阅读和编写,同时易于机器解析和生成. json中的字符集必须是U ...

  9. python字典与json转换_python字典与json转换的方法总结

    在python中json分别由列表和字典组成,本文主要介绍python中字典与json相互转换的方法.使用json.dumps可以把字典转成json字符串.使用json.loads可以把json字符串 ...

最新文章

  1. CentOS7 自定义登录前后欢迎信息
  2. 京东涉足快递业加剧行业动乱
  3. OpenResty安装--增强版的nginx
  4. Elasticsearch 节点发现
  5. Android 使用Adapter适配器模式实现无线轮播BannerView
  6. 操作系统学习笔记-2.1.3进程控制
  7. java中equals理解(2)
  8. [转]IT开发工程师的悲哀
  9. Python-多线程编程
  10. mysql replicatedodb_MySQL存储引擎MyISAM与InnoDB的区别
  11. 清华大学计算机系高考选科要求,清华大学新高考选课要求-清华大学新高考选考科目...
  12. 英語專家談英語學習認識方法
  13. 共模电感适用的频率_共模电感磁芯的选择决定其性能和应用场景——原文转自金昊德官网...
  14. vue移动端手机号正则表达式
  15. 看头发就知道你得什么病
  16. SM30 标准程序 添加事件、checkbox 等客制化需求
  17. 二叉树递归和非递归遍历
  18. 混合像元分解研究综述——线性混合像元分解算法
  19. SEO之红海战略和蓝海战略
  20. Oracle数据库PL/SQL中执行存储过程

热门文章

  1. 博客园“图灵杯”第3届博问大赛比赛结果
  2. 保护视力,我写的一个定时提醒的小玩意。
  3. Android 设备的CPU类型(通常称为”ABIs”)
  4. new Date()时间
  5. 从北京回来的年轻人,我该告诉你点什么?
  6. Mocha 和 Chai 入门初探
  7. W3 Total Cache+Hacklog Remote Attachment Upyun
  8. 关于 SAP 访问关键字的说明
  9. 学教育成空中楼阁 巨额学费背后却是失业风险
  10. 如何迁移整个git仓库