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

e-puck场景搭建

可以注意到一个黑色的小窗口出现在三维视图的左上角。它显示了电子吸盘机器人的摄像头拍摄的图像。该图像将保持黑色,直到机器人的控制器明确启用相机。最后,单击右上角的“x”可以关闭它。在对话框中,选择PROTO节点(Webots项目)/robots/gctronic/e-puck/e-puck(Robot)。一个电子吸盘机器人应该出现在竞技场的中央。通过按Alt+左键单击+拖动,对机器人施加力。无法对WoodenBox节点施加力,因为默认情况下,它们没有质量,并且被视为粘在地板上。将新控制器与机器人链接。

weixin_66540163的博客 767

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

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

wangnaisheng的专栏 9717

【脚本篇】---spyglass lint脚本

【代码】【脚本篇】---spyglass lint脚本。

冬瓜 6355

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

华为OD面试八股真题 - 操作系统 - 1

华为OD技术面,操作系统相关八股真题提供详细解答,这篇博客主要涉及于进程和线程相关知识点

qq_45776114的博客 1639

如何利用gretna软件计算脑网络全局属性(聚类系数,小世界属性,最短路径),局部属性指标(度,度分布,节点效率),如何理解网络稀疏度

grena工具箱被设计用于fMRI数据的图论网络分析。它是一套MATLAB函数和基于MATLAB的接口,用于常规的fMRI预处理,用于计算和统计分析最常用的网络指标,如小世界参数、效率、度、间性、关联性、层级性、同步性和模块化。......

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 9174

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

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

2401_82584055的博客 2189

Ascend开发包Acllite安装

设置环境变量,配置程序编译依赖的头文件,库文件路径。“$HOME/Ascend”请替换“Ascend-cann-toolkit”包的实际安装路径。将YOLOV7原始模型转换为适配昇腾310处理器的离线模型(*.om文件),放在model路径下。运行完成后,会在样例工程的out目录下生成推理后的图片,显示对比结果如下所示。可以使用以下两种方式下载,请选择其中一种进行源码准备。请从以下链接获取该样例的输入图片,放在data目录下。执行以下命令,执行编译脚本,开始样例编译。执行运行脚本,开始样例运行。

如果想成为中心,那么就到中心去吧。 317

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

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

明月清风@的博客 7124

高精度地图数据的结构

本文是个人在学习高精度地图数据结构的心得,主要是描述高精度地图的几层数据结构以及元数据信息。

qq_40664711的博客 5575

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

开发Flink Gauss CDC是为了适配华为自研GaussDB的特殊日志格式和逻辑复制机制,解决Flink CDC无法直接支持的问题,同时优化存量与增量同步的效率和一体化读取能力,满足GaussDB复合主键处理、数据落库等定制化需求,以实现高效、准确的数据同步。

数据与算法架构提升之路专栏 1985

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

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

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

cxu123321的博客 5522

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

余额充值