c#JSON序列化&反序列化

简介: JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。

 简介:

JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。

下载NuGet包

C#中操作JSON第一步先下载需要的NuGet包Newtonsoft.Json,要注意的是在同一个解决方案中不同类下载的Nuget包要保存版本一致,否者有可能会报错。

image.gif

反序列化

字符串string转换成类

先创建一个类

public class Site
{
    public int Id { get; set; }
    public string Name { get; set; }
}

image.gif

将字符串转换成实体类,再通过实体类打印出来

[Test]
    public void TestJsonToObject()
    {
        string json = "{\"Id\":1,\"Name\":\"爱吃香蕉的阿豪\"}";
        var site = JsonConvert.DeserializeObject<Site>(json) as Site;
        Console.WriteLine($"Id={site.Id}");
        Console.WriteLine("Nmae="+site.Name);
    }

image.gif

image.gif

json文件转换成类

在实际工作中当我们的json内容很多的时候,就不可能写在类中了,因此我们需要写在一个json文件中,然后通过路径去获取到它

创建一个data类

public class JsonData
{
    public List<Data> data { get; set; }
}
public class Data
{
    public int id { get; set; }
    public string name { get; set; }
}

image.gif

创建一个json文件

image.gif

{
  "data": [
    {
      "id" : 1,
      "name" : "爱吃香蕉的阿豪"
    },
    {
      "id" : 2,
      "name" : "张三"
    },
    {
      "id" : 3,
      "name" : "李四"
    }
  ]
}

image.gif

测试类

[Test]
    public void TestJsonText()
    {
        var json = File.ReadAllText(@"D:\project\c#\Solution\Project\JSON\data.json");
        var JsonData = JsonConvert.DeserializeObject<JsonData>(json);
        foreach (var data in JsonData.data)
        {
            Console.WriteLine("id="+data.id + "   data="+data.name);
        }
    }

image.gif

image.gif

序列化

沿用反序列化的Site类,先new一个类,设置字段的值,然后序列化成字符串打印出来

[Test]
    public void TestObjectToJson()
    {
        Site site = new() { Id = 2, Name = "laowan" };
        var serializeObject = JsonConvert.SerializeObject(site);
        Console.WriteLine(serializeObject);
    }

image.gif

image.gif


目录
相关文章
|
4月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
58 1
|
4月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
215 61
C# 中的 XML 与 JSON 数据处理
|
2月前
|
JSON JavaScript 前端开发
Go语言中json序列化的一个小坑,建议多留意一下
在Go语言开发中,JSON因其简洁和广泛的兼容性而常用于数据交换,但其在处理数字类型时存在精度问题。本文探讨了JSON序列化的一些局限性,并介绍了两种替代方案:Go特有的gob二进制协议,以及msgpack,两者都能有效解决类型保持和性能优化的问题。
75 7
|
2月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
68 4
|
2月前
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
98 3
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
JSON JavaScript 前端开发
|
2月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
3月前
|
存储 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第9天】在Java的世界里,对象序列化是连接数据持久化与网络通信的桥梁。本文将深入探讨Java对象序列化的机制、实践方法及反序列化过程,通过代码示例揭示其背后的原理。从基础概念到高级应用,我们将一步步揭开序列化技术的神秘面纱,让读者能够掌握这一强大工具,以应对数据存储和传输的挑战。
|
3月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第3天】在Java编程的世界里,对象序列化与反序列化是实现数据持久化和网络传输的关键技术。本文将深入探讨Java序列化的原理、应用场景以及如何通过代码示例实现对象的序列化与反序列化过程。从基础概念到实践操作,我们将一步步揭示这一技术的魅力所在。