• C#解析JSON详解


    C#解析Json详解

    什么是Json?

    JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式,主要用于数据的序列化和交互。常用于Web中,其他领域也经常出现JSON的身影。

    Json的特点

    Json的最小单元式键值对,即Key-Value组合。它的数据结构需要满足以下条件:

    • 由键值对组成,每个键(属性名)都是一个字符串,后面跟着一个值
    • 值可以是字符串、数字、布尔值、对象、数组、null等。
    • JSON对象是由一对大括号{}包围的键值对集合,键和值之间用冒号 : 分隔。
    • JSON数组是由一对方括号 [] 包围的值的有序列表,值之间用逗号 , 分隔。

    一个常规的Json如下所示;

    {
        "name": "xiaomai",
        "age": 30,
        "isStudent": false,
        "hobbies": ["basketball", "swimming"]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:在上面的示例中,name就是一个属性或者是键,后面跟一个:号,xiaomai 则是值,键值对必须成对出现,键值对之间需要用,隔开。

    • 字符串:
      JSON字符串必须用双引号 " 包围,而不是单引号 '

    • 数字:
      JSON支持整数浮点数

    • 布尔值:
      JSON使用truefalse表示布尔值。

    • null:
      JSON使用null表示空值或缺失的值。

    • 嵌套结构:
      JSON对象可以嵌套在其他JSON对象中,形成复杂的数据结构。数组也可以包含其他JSON值,包括对象和数组。

    常用的Json库

    在C#中,我们可以用这几个常用的JSON解析库来处理JSON数据;

    Json.NET (Newtonsoft.Json)

    Json.NET(也称为Newtonsoft.Json)是C#中最常用的JSON解析库,广泛用于处理JSON数据。

    它提供了丰富的功能,包括对象序列化、反序列化、LINQ查询、处理嵌套对象和数组、自定义序列化、自定义命名策略等等。

    它支持.NET框架和.NET Core,并且在开发社区中有广泛的支持和文档。

    可以通过以下指令在visual studio中安装,也可以通过NuGet包管理器来安装;

    Install-Package Newtonsoft.Json
    
    • 1

    System.Text.Json

    System.Text.Json是.NET Core 3.0及更高版本中引入的官方JSON库。

    它提供了基本的JSON序列化和反序列化功能,是.NET Core的一部分,无需额外安装。

    由于是官方支持的库,因此在.NET Core应用中使用时,它具有性能和可移植性方面的优势。
    安装方式:
    System.Text.Json是.NET Core的一部分,不需要额外的安装。

    实例

    本文主要介绍Json.NET 的使用以及操作;

    序列化

    序列化就是将对象转换为JSON字符串;
    下面我们创建了一个Person对象,然后使用JsonConvert.SerializeObject将其序列化为JSON字符串。

    using Newtonsoft.Json;
    using System;
    
    namespace JsonSerializationExample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 创建一个C#对象
                Person person = new Person
                {
                    Name = "John",
                    Age = 30,
                    City = "New York"
                };
    
                // 将对象序列化为JSON字符串
                string json = JsonConvert.SerializeObject(person);
    
                Console.WriteLine(json);
            }
        }
    
        public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public string City { get; set; }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    反序列化

    反序列化就是将JSON字符串转换为对象,使用JsonConvert.DeserializeObject方法将JSON字符串反序列化为C#对象;

    using Newtonsoft.Json;
    using System;
    
    namespace JsonDeserializationExample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // JSON字符串示例
                string json = "{\"Name\":\"Alice\",\"Age\":25,\"City\":\"Los Angeles\"}";
    
                // 将JSON字符串反序列化为C#对象
                Person person = JsonConvert.DeserializeObject<Person>(json);
    
                // 访问反序列化后的对象属性
                Console.WriteLine($"Name: {person.Name}");
                Console.WriteLine($"Age: {person.Age}");
                Console.WriteLine($"City: {person.City}");
            }
        }
    
        public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public string City { get; set; }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    总结

    本文主要介绍了C#对JSON的简单操作,作者能力有限,文章中难免存在错误和纰漏,请指正,如果文章帮到了你,请帮忙点赞,三连支持。
    👍👍👍
    👍👍👍
    👍👍👍

  • 相关阅读:
    Java之异常
    前端人员不要只知道KFC,你应该了解 BFC、IFC、GFC 和 FFC
    速看:免费领取4台阿里云服务器_申请入口及领取流程
    4-1网络层-网络层的功能
    5分钟的时间制作一个反弹球游戏
    Docker 入门笔记
    Django ModelForm 初识:简化表单处理和数据验证
    ChatGPT提示词工程&LLM应用全解
    Android面试整理之SQLite数据库——sql语句和常用函数(一)
    RepVGG:让VGG风格的ConvNet再次伟大起来
  • 原文地址:https://blog.csdn.net/u010632165/article/details/133314004