【C#】【Json】Json序列化与反序列化

c# 解析json,对对象进行序列化和反序列化 1.使用System.Runtime.Serialization.Json(1)在这个例子中,我们定义了一个Person类,并使用和DataMember特性来标记需要序列化和反序列化的属性。然后,我们创建了一个Person对象,并使用方法将其序列化为JSON字符串。接着,我们使用方法将JSON字符串反序列化为Person对象。最后,我们输出反序列化后的数据。(2)在C#中,虽然。 阅读详情

JSON

类似 XML
  • JSON 是纯文本
  • JSON 具有“自我描述性”(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML
  • 读取 XML 文档
  • 使用 XML DOM 来循环遍历文档
  • 读取值并存储在变量中
使用 JSON
  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

Json的序列化与反序列化

原文链接:https://www.cnblogs.com/fengxuehuanlin/p/5700282.html

三种方式:

1.使用JavaScriptSerializer类:

//使用JavaScriptSerializer方式需要引入的命名空间,这个在程序集System.Web.Extensions.dll.中

using System.Web.Script.Serialization;

class Program
{
    static void Main(string[] args)
    {
        //序列化操作
        JavaScriptSerializer jss = new JavaScriptSerializer();
        var json = new { name = "fxhl", age = 23 };           
        string str = jss.Serialize(json);  
        //反序列化操作
        Person person = jss.Deserialize<Person>(str);
        Console.WriteLine(person.name);
    }
}  
[Serializable]      
public class Person
{
    public string name { get; set; }
    public int age { get; set; }
}

2.使用JSON.NET类库:

class Program
{
static void Main(string[] args)
{
    //序列化操作
    var json = new { user = new { name = "fxhl", age = 23 }};
    string jsonData = JsonConvert.SerializeObject(json);
    Console.WriteLine(jsonData);
    //反序列化操作方法一
    Person p1= JsonConvert.DeserializeObject<Person>(jsonData);
    Console.WriteLine(p1.user.name);
    //反序列化操作方法二
    string json2 = "[{\"user\":{\"name\":\"fxhl\",\"age\":23}}]";
    List<Person> listp2= JsonConvert.DeserializeObject<List<Person>>(json2);
    Console.WriteLine(listp2[0].user.name);
    Console.ReadKey();
}
}
public class Person
{
    public Person user { get; set; }
    public string name { get; set; }
    public int age { get; set; }
}

3.使用DataContractJsonSerializer类:

//Person实体中的契约 [DataMember],[DataContract],是使用DataContractJsonSerializer序列化和反序列化必须要加的

//使用DataContractJsonSerializer方式需要引入的命名空间,在System.Runtime.Serialization.dll.中

using System.Runtime.Serialization.Json;

static void Main(string[] args)
    {
        //序列化操作
        Person p1 = new Person()
        {
            name = "fxhl",
            age = 23
        };
        DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Person));
        MemoryStream msObj = new MemoryStream();
        //将序列化之后的Json格式数据写入流中
        js.WriteObject(msObj, p1);
        //从0这个位置开始读取流中的数据
        msObj.Position = 0;     
        StreamReader sr = new StreamReader(msObj, Encoding.UTF8);
        string json = sr.ReadToEnd();
        Console.WriteLine(json);
        sr.Close();
        msObj.Close();
        //反序列化操作
        using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
        {
            DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(Person));
            Person model = (Person)deseralizer.ReadObject(ms);// //反序列化ReadObject
            Console.WriteLine(model.name);
        }
        Console.ReadKey();
    }
}
[DataContract]     
public class Person
{
    [DataMember]
    public string name { get; set; }
    [DataMember]
    public int age { get; set; }
}

总结:最后还是尽量使用JSON.NET来序列化和反序列化,性能好。

实例

参考链接:https://blog.youkuaiyun.com/lovegonghui/article/details/50247407?utm_source=blogxgwz0

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;

namespace Json_XmlSerializer
{
    class Program
    {
        static void Main(string[] args)
        {
            //JavaScriptSerializer
            ////序列化操作
            //JavaScriptSerializer jss = new JavaScriptSerializer();
            //var json = new { name = "小明", birth = 1990, school = "No.1 Middle School", height = 1.70, weight = 65 };
            //string str = jss.Serialize(json);
            ////FileStream fs = new FileStream(@"D:\js.json", FileMode.OpenOrCreate);
            //Console.WriteLine(str);
            ////反序列化操作
            //Person person = jss.Deserialize<Person>(str);
            //Console.WriteLine(person.name+" "+person.birth);
            //Console.ReadKey();

            //Json.NET
            //序列化操作
            var json = new { name = "小明", birth = 1990, school = "No.1 Middle School", height = 1.70, weight = 65 };
            string jsonData = JsonConvert.SerializeObject(json);
            Console.WriteLine(jsonData);
            //将json序列化并保存到文件中
            File.WriteAllText(@"D:/js.json", jsonData);
            ////反序列化操作方法一
            //Person person = JsonConvert.DeserializeObject<Person>(jsonData);
            //Console.WriteLine(person.name + " " + person.birth);

            //反序列化json文件并写入到一个对象中
            Person person = JsonConvert.DeserializeObject<Person>(File.ReadAllText(@"D:/js.json"));
            Console.WriteLine(person.name + " " + person.birth);
            Console.WriteLine("反序列化json文件成功!");

            Console.ReadKey();
        }
    }
}
JSON:C#与JS中的序列化与反序列化 在Web 阅读详情

相关推荐

C# 使用Json.NET对数据进行序列化和反序列化

本文首发于个人博客https://kezunlin.me/post/22391aa3/,欢迎阅读最新内容! c# json serialize and deserialize using json.net JsonConvert Guide Json.NET JsonConvert.SerializeObject JsonConvert.DeserializeObject install ...

KeZunLin's blog 1233

C#Json序列化及反序列化

一种数据表示形式,JSON:JavaScript Object Notation对象表示法。Json的语法规则大致为以下四种:数据在键值对中数据由逗号分隔花括号保存对象方括号保存数组Serialization,是一个将对象的状态信息转变为可以存储或传输的形式的过程。Deserialization,顾名思义是一个将可以存储或传输的序列转变为某个对象的状态信息的过程。

wangkun998的博客 1872

SimpleJson

simplejson模块主要用于将Python数据类型和json类型互相转换。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。JSON采用独立于语言的文本格式,但是也使用了类似C语言家族的习惯(包括C,C++,C#,Java,Python等)。这些特性使JSON称为理想的数据交换语言

关于C#对Json进行序列化和反序列化的方法

Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。Json采用完全独立于语言的文本格式。这使得Json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。Json简单来说就是JS中的对象和数组,所以Json也存在两种结构:对象、数组。Json对象:Json对象定义在花括号“{}”内,以Key:value键值对的形式存放数据,多个数据使用分号“;”分割。

xiaoweids的博客 4367

SimpleJSON:使用实用程序功能更新了SimpleJSON

SimpleJSON 基于兼容Unity3D的AC#json读取器/写入器 可以在找到此脚本的官方Github存储库。 该存储库包含的改进大部分是一堆单元测试(与Unity测试运行器兼容),这些单元测试可以确保事情按预期进行,并进行了一些性能改进。 单元测试有助于发现一些东西,这些东西没有实现json标准,并且已经修复。 升级版 此存储库是一个更新,其中包括类“ JsonUtils”。 此类允许您搜索JSON数组中的属性。

JS逆向-快手__NS_hxfalcon参数分析

现在快手H5接口都需要__NS_hxfalcon这个参数,这篇文章就是逆向这个参数

ckcookies的博客 4075

C# JSON之序列化与反序列化

C# JSON之序列化与反序列化

wangnaisheng的专栏 9717

博图编写温度程序_s7 smart200的CRC-16校验程序

最近做一个小项目,项目中采用485自由口通讯方式,使用一台西门子S7 smart200对一台冷水机做多个状态和温度做监控,并能对冷水机进行启停控制,和参数设置,因为冷水机的协议不是标准modbus格式,所以要自己编写通信协议。其中要用到CRC校验,在网上找了些别人写的程序,基本上用不了。只能自力更生了。首先,找到CRC校验的算法,并理解。 下面就是我找的算法(这个网上很多),1....

weixin_39539761的博客 3062

C#中Json序列化和反序列化总结

Json序列化和反序列化总结 JSON介绍1.什么是JSON?2.JSON基于两种结构:3.几种表现形式:4.序列化和反序列化的4中方式:JavaScriptSerializer类1.定义2.示例 JSON介绍 1.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。 JSON采用完全独立于程序语言的文本格式。这些特性使JSON成为理想的数据交换语言。 2.JSON基于两种结构:

jia380_csdn的博客 1万+

江科大笔记—OLED调试工具

OLED介绍及调试工具

m0_62005595的博客 657

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2687

在C#中对 JSON进行序列化和反序列化处理

概述:在现代软件开发领域,不同系统和平台之间的数据交换是不可或缺的方面。JSON(JavaScript 对象表示法)因其轻量级、人类可读和易于解析的特性而成为一种无处不在的数据格式。使用 C# 🚀编程的 JSON 序列化和反序列化在 C# 编程的上下文中,执行 JSON 序列化和反序列化是在应用程序、Web Service 和数据库之间交换数据的常见任务。序列化是指将对象转换为适合传输或存储的格式(如JSON)的过程,而反序列化则涉及从序列化形式重建对象的反向过程。

2401_82584055的博客 2189

FPGA:UART串口接收(高干扰情况)

在上一篇文章中介绍过UART串口接收模块,其中一个需要优化的方向就是在高干扰情况下,如何实现可靠的UART串口接收任务。

weixin_50164178的博客 1672

C#序列化和反序列化(json)

一,什么是Json? json是存储和交换文本信息的方法,类似xml。但是json比xml更小,更快,j更易于解析。并且json采用完全独立于语言的文本格式(即不依赖于各种编程语言),这些特性使json成为理想的数据交换语言。 json使用JavaScript语法来描述数据对象,但是json独立于语言和平台。json解析器和json库支持许多不同的编程语言。 json语法规则: 数据在键值对中.........

明月清风@的博客 7124

告别兼容性困扰:在F-Droid中安全部署Termux的完整指南

本文提供了一份在F-Droid中安全部署Termux的完整指南,旨在彻底解决Android设备上的兼容性困扰。文章详细阐述了为何选择F-Droid而非Google Play商店,并逐步指导用户完成从彻底清理旧版本、安装F-Droid客户端、授予权限到最终安装配置Termux的全过程。指南还涵盖了进阶的稳定性配置、数据迁移方法以及常见问题排查,确保用户获得一个稳定、无冲突的命令行工作环境。

weixin_29224309的博客 944

超越界面设计:GUI Guider与LVGL在STM32F103上的系统集成与架构思考

本文探讨了GUI Guider与LVGL在STM32F103微控制器上的系统集成与架构设计,重点分析了工程模块化组织、内存管理优化、硬件驱动接口设计以及FreeRTOS多任务集成。针对STM32F103ZET6的资源限制,提供了实用的移植策略和性能优化方案,帮助开发者构建高效、可维护的嵌入式GUI系统。

j2k3l4的博客 922

C# 操作json 序列化 反序列化

在日常开发中我们会常常用到json字符串来前后台交互,那么有时候json格式太复杂不好处理,我们就需要序列化或反序列化 在包控制管理中安装Newtonsoft.Json 使用时引用 using Newtonsoft.Json; using Newtonsoft.Json.Linq; //C# JSON字符串序列化与反序列化 //C#将对象序列化成JSON字符串 ...

你要明白,任何问题都不是孤立存在的,一定有人曾经遇到过,并且已经有更好的解决办法了,只是我还不知道。我不应该在黑暗中独自前行,去重新发明轮子,也许我的顿悟,只是别人的基本功!我应该要站在巨人的肩膀上,学习更成熟的经验和方法,然后再来解决这个问题 1018

【2026年米哈游春招 - 3月14日 -第一题- 行列相等】(题目+思路+Java&C++&Python解析+在线测试)

摘要 本文解决了一个矩阵行列和匹配问题:统计矩阵中行和等于列和的所有行列对数量。算法首先计算每行和每列的元素和,然后利用哈希表统计各行列和的出现次数。通过遍历列和并查询对应的行和出现次数,高效计算出匹配对数。该方法时间复杂度为O(nm),空间复杂度为O(n+m),适用于大规模矩阵数据。代码实现了Python、Java和C++版本,通过哈希表优化避免了暴力枚举,显著提高了计算效率。

m0_73659489的博客 83

C#中json字符串的序列化和反序列化

C#中json字符串的序列化和反序列化 今日写番茄闹钟程序,打算添加日程安排内容,使用到json格式文件的序列化和反序列化: 什么是Json? Json【javascript对象表示方法】, 它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它, 并且它很容易被计算机转化和生成,它是完全独立于语言的。 Json支持...

cxu123321的博客 5522

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

一文看懂C#对JSON序列化与反序列化解析教程(小白版)

本教程介绍了C#中使用Newtonsoft.Json库进行JSON序列化与反序列化的基础操作。内容涵盖: 准备工作:安装Newtonsoft.Json包和导入命名空间 JSON基础概念:格式特点和优势 简单JSON操作:对象与JSON字符串相互转换 格式化输出:提高JSON可读性 复杂JSON处理:包含数组和嵌套对象的案例 教程通过实际代码示例演示了从简单到复杂的JSON处理技术,适合C#初学者学习JSON数据处理的基本方法。包含序列化、反序列化以及格式化输出的完整流程,帮助开发者快速掌握JSON在C#中的

isoft888的专栏,致力于C#/python分享物联网、大数据,神经网络的等领域,欢迎讨论交流! 1944

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C#—Json序列化和反序列化

在C#中,可以使用System.Web.Script.Serialization.JavaScriptSerializer类来序列化和反序列化JSON数据。可以使用Newtonsoft.Json库进行JSON的序列化。可以使用.NET内置的System.Text.Json库来进行JSON的序列化。

qq_3517289697的博客 3230

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C#的JSON序列化与反序列化

记录使用C#进行json序列化和反序列化方法。

weixin_40356612的博客 948

在C#中,Json的序列化和反序列化的几种方式总结

原文地址:https://www.cnblogs.com/caofangsheng/p/5687994.html 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象。 什么是JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format....

qq_36124520的博客 285

C# JSON格式数据的序列化与反序列化

一,自定义Json格式序列化: using System.Data; using System.Text; using System.Collections.Generic; using System.Reflection; using System.Collections; using System.Web.UI.WebControls; using System.Web.UI.HtmlCont...

C++++ ++ 529

C#中JSON的序列化和反序列化取值示例

推荐教程 c# 2015 & 2017 视频教程|xin3721自学网c#入门经典视频教程https://www.xin3721.com/eschool/CSharpxin3721/ C#中JSON的序列化和反序列化取值示例 1.首先需要引用Newtonsoft.Json.dll文件(代码引用using Newtonsoft.Json和using Newtonsoft.Json.Linq;) 2.定义两个类PerSon和_Name,代码如下:(如何创建多个根节点的JSON字符串可以定

chinaherolts2008的博客 854

.net / C# 中JSON的反序列化

使用Newtonsoft在.net / C# 中对JSON反序列化

Mahmut0205的博客 1386
上一篇: 【C#】C#基本知识
下一篇: REST风格的请求方式
iam_Cheng
博客等级 码龄9年 41粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值