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

C#/WPF JSON序列化和反序列化

什么是json

        json是存储和交换文本信息的方法,类似xml。但是json比xml更小,更快,更易于解析。并且json采用完全独立于语言的文本格式(即不依赖于各种编程语言),这些特性使json成为理想的数据交换语言。json序列化是指将对象转换成json字符串,json反序列化是指将json字符串还原成对象。

json数据结构    

        json简单来说就是javascript中的对象和数组,通过这两种数据结构就可以表示各种复杂的结构。
对象:对象在json中表示为大括号“{}”括起来的内容,数据结构为{key:value,key:value,...}的键值对的结构。在面向对象中,key为对象的属性,vlaue为对应属性的值。
数组:数组在json中表示为中括号“[]”括起来的内容,数据结构为["java","javascript","vb",...],取值方式和所以语言一样,使用索引获取,字段的值可以是数字,字符串,数组,对象。

C#使用json序列化有几种方式

  • 使用System.Text.Json(微软自带)
  • 使用Newtonsoft.Json(引用Newtonsoft.Json.dll)
  • System.Runtime.Serialization.Json(以数据流为中介)
  • Nancy(包)
使用System.Text.Json
      #region using System.Text.Jsonprivate static string ObjectToStringOne(Object obj){string str = System.Text.Json.JsonSerializer.Serialize(obj);return str;}private static T StringToObjectOne<T>(string str){T obj = System.Text.Json.JsonSerializer.Deserialize<T>(str);return obj;}#endregion
使用Newtonsoft.Json
      #region using NewTonsoft.Jsonprivate static string ObjectToStringTwo(Object obj){string str = Newtonsoft.Json.JsonConvert.SerializeObject(obj);return str;}private static T StringToObjectTwo<T>(string str){T obj = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(str);return obj;}#endregion
获取序列化字符串中某个字段
using Newtonsoft.Json.Linq;
jsonStr={"resCode":0,"resMeg":"空闲","data":[{"parkName": "A停车场","freeSpaceNum":72}]}
JObject obj = JObject.Parse(jsonStr);
string resMeg= obj["resMag"].ToString(); // 获取resMeg字段的值
string freSpaceNum = obj["data"][0]["freSpaceNum"].ToString();

参考:

C#中 Json序列化与反序列的几种方法_c# json序列化-CSDN博客

相关文章:

  • C单片机关键字extern、static 和 const
  • WPF Border
  • labelme目标检测数据类型转换
  • 重组蛋白表达系统的比较-卡梅德生物
  • Unity 渲染顺序受哪些影响(相机depth、SortingLayer、Render Queue、透明)
  • mysql的统计数据count
  • AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用
  • 【即插即用篇】YOLOv8改进实战 | 引入 Involution(内卷),用于视觉识别的新一代神经网络!涨点神器!
  • 云渲染UE4像素流送搭建(winows、ubuntu单实例与多实例像素流送)
  • SQL进阶:子查询
  • 轻量Http客户端工具VSCode和IDEA
  • AutoSAR(基础入门篇)2.2-AutoSAR架构中的Ports类型与Runnables可运行实体
  • 智能优化算法应用:基于厨师算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • VideoPoet: Google的一种用于零样本视频生成的大型语言模型
  • test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • CentOS 7 防火墙操作
  • Centos6.8 使用rpm安装mysql5.7
  • es6(二):字符串的扩展
  • ES6核心特性
  • ES6语法详解(一)
  • JavaScript 一些 DOM 的知识点
  • JavaScript类型识别
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Laravel 实践之路: 数据库迁移与数据填充
  • Python学习之路13-记分
  • windows-nginx-https-本地配置
  • 订阅Forge Viewer所有的事件
  • 关于for循环的简单归纳
  • 今年的LC3大会没了?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 新版博客前端前瞻
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # Panda3d 碰撞检测系统介绍
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #HarmonyOS:Web组件的使用
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (AngularJS)Angular 控制器之间通信初探
  • (第一天)包装对象、作用域、创建对象
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm高校实验室 毕业设计 800008
  • (六)Hibernate的二级缓存
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (太强大了) - Linux 性能监控、测试、优化工具
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net core控制台应用程序初识
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 发送邮件
  • @RequestParam详解
  • [AX]AX2012开发新特性-禁止表或者表字段