当前位置: 首页 > news >正文

C#中JSON字符串与Dictionary字典的相互转换方法

在C#中,JSON字符串和Dictionary<TKey, TValue>字典类型之间的转换是非常常见的操作。这通常通过使用诸如Json.NET(也称为Newtonsoft.Json)或内置的System.Text.Json库来完成。以下是如何使用这两个库进行转换的示例。

使用 Json.NET(Newtonsoft.Json)

首先,确保项目中安装了Newtonsoft.Json包。可以通过NuGet包管理器来安装它。

JSON字符串转换为Dictionary
using Newtonsoft.Json;
using System;
using System.Collections.Generic;public class Program
{public static void Main(){string json = "{\"key1\":\"value1\",\"key2\":\"value2\"}";Dictionary<string, string> dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);foreach (var kvp in dictionary){Console.WriteLine($"Key = {kvp.Key}, Value = {kvp.Value}");}}
}
Dictionary转换为JSON字符串
using Newtonsoft.Json;
using System;
using System.Collections.Generic;public class Program
{public static void Main(){Dictionary<string, string> dictionary = new Dictionary<string, string>{{ "key1", "value1" },{ "key2", "value2" }};string json = JsonConvert.SerializeObject(dictionary);Console.WriteLine(json);}
}

使用 System.Text.Json

从.NET Core 3.0开始,System.Text.Json成为了.NET内置的JSON处理库。

JSON字符串转换为Dictionary
using System;
using System.Collections.Generic;
using System.Text.Json;public class Program
{public static void Main(){string json = "{\"key1\":\"value1\",\"key2\":\"value2\"}";Dictionary<string, string> dictionary = JsonSerializer.Deserialize<Dictionary<string, string>>(json);foreach (var kvp in dictionary){Console.WriteLine($"Key = {kvp.Key}, Value = {kvp.Value}");}}
}
Dictionary转换为JSON字符串
using System;
using System.Collections.Generic;
using System.Text.Json;public class Program
{public static void Main(){Dictionary<string, string> dictionary = new Dictionary<string, string>{{ "key1", "value1" },{ "key2", "value2" }};string json = JsonSerializer.Serialize(dictionary);Console.WriteLine(json);}
}

注意事项

  1. 键和值的类型:在上面的示例中,键和值都是字符串类型。如果字典包含其他类型的键或值,需要相应地调整泛型参数。

  2. 复杂对象:如果字典的值是复杂对象,而不是简单的值类型,需要定义相应的类来表示这些对象,并在序列化和反序列化时使用这些类。

  3. 错误处理:在实际应用中,应该添加适当的错误处理逻辑来处理潜在的JSON格式错误或反序列化失败的情况。

  4. 性能System.Text.Json通常比Json.NET更快且内存占用更少,特别是在处理大型JSON数据时。然而,Json.NET提供了更多的功能和配置选项。根据具体需求选择合适的库。


http://www.mrgr.cn/news/50327.html

相关文章:

  • 【Oracle数据库进阶】004.SQL基础查询_聚合、分组、过滤、排序
  • C++对C的扩展(一)---作用域运算符和命名空间
  • 大数据开发电脑千元配置清单
  • 亚洲最具影响力人物颜廷利:心理健康对身体健康的重要影响
  • 高级java每日一道面试题-2024年10月15日-JVM篇-说一下JVM的主要组成部分?及其作用?
  • 【JS】数组详解
  • 异地多活(Active-Active Geo-Redundancy)
  • 洛谷 P1803:凌乱的yyy / 线段覆盖 ← 贪心算法
  • WIN11常用设置
  • Leetcode 227 Basic calculator
  • 阻塞队列相关的问题
  • Github 2024-10-15 Python开源项目日报 Top10
  • Python | Leetcode Python题解之第479题最大回文数乘积
  • 【Linux】解读信号的本质&相关函数及指令的介绍
  • DDPM代码详解(可用)
  • C语言复习概要(六)
  • 【2D/3D-Lidar-SLAM】 2D/3D激光SLAM以及GMapping 与 Cartographer
  • 开发规范 - mac系统1小时装机极速装机开发环境
  • 基于springboot+微信小程序校园自助打印管理系统(打印1)
  • Golang | Leetcode Golang题解之第479题最大回文数乘积