【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数组中的属性。

Python+pytest+requests 自动化测试框架

环境准备 本次选用的是Python+Pytest+requests来搭建自动化框架,需要有 Python 环境(3.x 版本),安装pytest和requests,不会安装的自行去网上搜教程。 关于 Pytest 的基本使用,这里不作讲解,不清楚的可以看我之前的文章。 简单 Demo 我们先创建一个项目,取名api-test,然后在下面创建一个test_api.py的文件 # test_api.py import pytest import requests def test_01():

weixin_42686892的博客 1万+

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

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

wangnaisheng的专栏 9717

ESP32-CAM图传小车:端边协同的嵌入式视觉系统设计

在物联网边缘智能场景中,嵌入式视觉系统需平衡实时性、算力与成本。其核心在于理解图像采集、硬件编码、低延迟传输与分层计算的基本原理——OV2640等CMOS传感器配合JPEG硬件编码可显著降低主控负载;TCP流式协议比HTTP/RTSP更适配资源受限MCU;而‘计算卸载’架构将OpenCV等重负载移至Android端,使ESP32专注实时控制与传输,既发挥FreeRTOS任务调度优势,又规避了PSRAM带宽与内存瓶颈。该模式广泛适用于教育机器人、智能巡检及DIY视觉终端等场景,本文以WiFi图传坦克小车为载体

weixin_42524864的博客 373

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万+

51单片机IAP技术详解:从原理到实战,实现远程程序自更新

在嵌入式系统开发中,程序更新是产品维护和功能迭代的核心需求。传统方式依赖外部烧录器,操作繁琐且无法远程进行。IAP(在应用中编程)技术则从原理层面解决了这一难题,它允许单片机在运行过程中通过特定接口(如串口)动态修改自身的Flash程序存储器。这项技术的核心价值在于赋予设备远程升级和自主维护的能力,极大地延长了产品生命周期并降低了维护成本。其典型应用场景包括智能家居控制器、工业数据采集模块和远程仪表等部署后不便拆卸的设备。本文以经典的51单片机(如STC89C52)为例,深入剖析IAP的实现,其中Bootl

weixin_29161719的博客 404

Unity3d实现红外热成像效果

1.将需要在红外图像中高亮的物体设置到图层PostProcessing。 2.新建一个相机CameraHighLight,设置其Culling Mask为PostProcessing,也就是在这个相机中只有PostProcessing图层的物体可见。 3.新建一个RenderTexture,命名为HightLightRt,将CameraHighLight的Target Texture设HightLightRt。 4.新建一个相机Camera2,这个相机用于显示其他物体。 接下来将CameraHigh

zouxin_88的专栏 8327

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

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

2401_82584055的博客 2189

使用 MATLAB/Simulink + Simscape Electrical + Simulink Design Optimization,构建一个基于SiC/GaN的Z源逆变器在储能系统中的软启

《手把手教你学Simulink:Z源逆变器在储能系统中的应用》摘要 本文详细介绍了使用MATLAB/Simulink构建Z源逆变器储能系统仿真模型的全过程。Z源逆变器凭借其独特的阻抗网络结构,解决了传统逆变器在直通保护和升压能力方面的痛点。文章通过6个关键步骤:主电路搭建、调制策略设计、软启动实现、仿真分析、效率对比和工程问题解决方案,完整展示了Z源逆变器从理论到仿真的实现路径。重点讲解了直通零矢量SPWM调制策略和渐进式升压比控制方法,验证了系统93.3%的效率和优异的抗扰性能。该模型为光伏储能、电动汽车

MHD0815的博客 122

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

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

明月清风@的博客 7124

【异常】飞书OpenClaw机器人 HTTP 401: Invalid Authentication 报错排查与解决方案

HTTP 401 是HTTP协议标准定义的未授权(Unauthorized)状态码,核心含义为请求方身份认证无效,服务端拒绝执行本次请求。飞书开放平台服务端对自建机器人的全链路鉴权校验失败。无论是机器人接收飞书事件推送的上行请求,还是机器人主动调用飞书开放平台API的下行请求,只要身份凭证无效、鉴权逻辑校验不通过,飞书服务端就会返回该报错,并最终透传到飞书客户端会话窗口中。

奶爸的编程之路,也就一周冷个三天 3761

基于STM32、HAL库的ADE7880ACPZ-RL电能计量芯片驱动程序设计

@retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)PA6 (MISO) <--> SDO (SPI数据输出)PB0 (CS) <--> /CS (片选,低有效)

corlin6688的博客 668

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

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

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

【QT开发教程】使用Qt进行NFC编程

近场通信(NFC,Near Field Communication)技术广泛应用于现代设备中,例如智能手机、支付终端和门禁系统。Qt提供了一套完整的NFC模块,使开发者可以轻松地在应用程序中实现NFC功能。本文将介绍如何在Qt中进行NFC编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1469

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

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

cxu123321的博客 5522

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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、付费专栏及课程。

余额充值