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

C# Newtonsoft.Json 使用指南

Newtonsoft.Json (也称为 Json.NET) 是一种适用于 .NET 的常用高性能 JSON 框架,用于处理 JSON 数据。它提供了高性能的 JSON 序列化和反序列化功能。

安装

通过 NuGet 安装

基本用法

1. 序列化对象为 JSON 字符串

using Newtonsoft.Json;var product = new Product
{Name = "Apple",Expiry = new DateTime(2008, 12, 28),Sizes = new[] { "Small", "Medium", "Large" }
};string json = JsonConvert.SerializeObject(product);
// 输出:
// {"Name":"Apple","Expiry":"2008-12-28T00:00:00","Sizes":["Small","Medium","Large"]}//处理object类型的数据json序列化
object[,] config = worksheet.Cells[1, 1, maxHang, maxLie].Value as object[,];
string customJson = JsonConvert.SerializeObject(config);
var bytes = Encoding.UTF8.GetBytes(customJson);
var path = @"D:\jsonFile.bytes";
File.WriteAllBytes(path, bytes);

2. 反序列化 JSON 字符串为对象

string json = @"{'Name': 'Apple','Expiry': '2008-12-28T00:00:00','Sizes': ['Small', 'Medium', 'Large']
}";Product product = JsonConvert.DeserializeObject<Product>(json);Console.WriteLine(product.Name); // 输出: Apple

3. 格式化 JSON 输出

对字符串进行缩进换行,更易于阅读

string json = JsonConvert.SerializeObject(product, Formatting.Indented);
// 输出格式化的 JSON:
// {
//   "Name": "Apple",
//   "Expiry": "2008-12-28T00:00:00",
//   "Sizes": [
//     "Small",
//     "Medium",
//     "Large"
//   ]
// }

4、大型 JSON 处理的流式处理

对于大型 JSON 处理,可以使用 JsonTextReader 和 JsonTextWriter 进行流式处理:

// 读取
using (StreamReader file = File.OpenText("largefile.json"))
using (JsonTextReader reader = new JsonTextReader(file))
{JObject o = (JObject)JToken.ReadFrom(reader);// 处理数据
}// 写入
using (StreamWriter file = File.CreateText("largefile.json"))
using (JsonTextWriter writer = new JsonTextWriter(file))
{JsonSerializer serializer = new JsonSerializer();serializer.Serialize(writer, largeObject);
}
http://www.xdnf.cn/news/5394.html

相关文章:

  • STM32学习记录——点灯
  • Qt坐标系 + 信号和槽 + connect函数(8)
  • 从InfluxDB到StarRocks:Grab实现Spark监控平台10倍性能提升
  • 技术书籍推荐(002)
  • MySQL数据库下篇
  • 缓存(4):常见缓存 概念、问题、现象 及 预防问题
  • [项目总结] 抽奖系统项目技术应用总结
  • 小土堆pytorch--torchvision中的数据集的使用dataloader的使用
  • 设计模式之工厂模式(二):实际案例
  • 支持selenium的chrome driver更新到136.0.7103.92
  • 飞蛾扑火算法matlab实现
  • 【仿真】【具身智能仿真】Isaac Simlab云端部署(入门学习性价比最高的方式)
  • 深入解析多选字段的存储与查询:从位运算到数据库设计的最佳实践
  • 仿真生成激光干涉包裹相位数据-用于深度学习训练!
  • Java SE(11)——内部类
  • JavaSE核心知识点02面向对象编程02-07(枚举)
  • 【Bootstrap V4系列】学习入门教程之 组件-巨幕(Jumbotron)和列表组(List group)
  • 常用的rerank模型有哪些?都有什么优势?
  • Python 自动化脚本开发秘籍:从入门到实战进阶(6/10)
  • 螺旋驱动管道机器人的结构设计
  • OpenWrt开发第7篇:OpenWrt配置支持Web界面
  • 网址为 http://xxx:xxxx/的网页可能暂时无法连接,或者它已永久性地移动到了新网址
  • Linux共享内存深度解析:从内核机制到云原生应用
  • DAY 17 训练
  • 基于Dockers的Bitwarden的私有本地部署
  • 动态规划之二维费用的背包问题解析
  • CDGP历次主观题真题回忆
  • 深入浅出之STL源码分析4_类模版
  • Bitacora:基因组组件中基因家族识别和注释的综合工具
  • PTA:jmu-ds-拓扑排序