json字符串和字典类型的相互转换(转载)
转自: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字符串和字典类型的相互转换(转载)相关推荐
- python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。
注意:本篇所讲的文件操作,都是对后缀为.txt..json文件进行的操作. 1.json其实就是一个文件的格式,像.txt一样,json也是一个纯文本文件.与.txt不同的是,json常用来存放有键值 ...
- iOS开发JSON字符串和字典互转
1.相关属性简述 NSJSONReadingOptions读取属性: typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) {NSJSONReadi ...
- json和python中字典的区别和联系_Python中 json字符串和字典的区别
一.前言 工作或学习中,相信很多同学跟我一样,对于json字符串和字典两者的概念一直摸棱两可.emmm,既然不懂,那我们查资料并整理下来. 二.json字符串和字典的区别 简单粗暴地说,字典是一种数据 ...
- json字符串与java对象的相互转换(jackson)
1.java对象转换为json字符串 package com.chichung.json;import com.fasterxml.jackson.core.JsonProcessingExcepti ...
- Jackson第一篇【JSON字符串、实体之间的相互转换】
来源:http://blog.csdn.net/songyongfeng/article/details/6932655 既然你看到这篇文章相信你已经了解JSON的好处了,那么废话不多说直接进入主题. ...
- 记录一次和朋友聊天遇到的面试题 ip地址字符串和long类型的相互转换 都是参考了别人的代码 加了一些个人理解的总结
package zyr.demo02;import java.util.*;/*** ip地址和long的相互转换*/ public class Test{/*ip->long:*1.将ip地址 ...
- python中日期字符串与datetime类型的相互转换
文章目录 背景 代码 1. `datetime`如何转换成日期字符串 2. 日期字符串如何转换成`datetime` 背景 我们在平常写代码的过程中最常遇到的就是形如2021-05-12,2021/0 ...
- Python解析json字符串,json字符串用法
json数据简介 json数据是一个轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使json称为理想的数据交换语言,易于人阅读和编写,同时易于机器解析和生成. json中的字符集必须是U ...
- python字典与json转换_python字典与json转换的方法总结
在python中json分别由列表和字典组成,本文主要介绍python中字典与json相互转换的方法.使用json.dumps可以把字典转成json字符串.使用json.loads可以把json字符串 ...
最新文章
- CentOS7 自定义登录前后欢迎信息
- 京东涉足快递业加剧行业动乱
- OpenResty安装--增强版的nginx
- Elasticsearch 节点发现
- Android 使用Adapter适配器模式实现无线轮播BannerView
- 操作系统学习笔记-2.1.3进程控制
- java中equals理解(2)
- [转]IT开发工程师的悲哀
- Python-多线程编程
- mysql replicatedodb_MySQL存储引擎MyISAM与InnoDB的区别
- 清华大学计算机系高考选科要求,清华大学新高考选课要求-清华大学新高考选考科目...
- 英語專家談英語學習認識方法
- 共模电感适用的频率_共模电感磁芯的选择决定其性能和应用场景——原文转自金昊德官网...
- vue移动端手机号正则表达式
- 看头发就知道你得什么病
- SM30 标准程序 添加事件、checkbox 等客制化需求
- 二叉树递归和非递归遍历
- 混合像元分解研究综述——线性混合像元分解算法
- SEO之红海战略和蓝海战略
- Oracle数据库PL/SQL中执行存储过程