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"]
}

注意:在上面的示例中,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

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; }
    }
}

反序列化

反序列化就是将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; }
    }
}

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小麦大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值