C# 解析JSON详解

C#解析Json详解

文章目录

  • C#解析Json详解
    • 什么是Json?
      • Json的特点
    • 常用的Json库
      • Json.NET (Newtonsoft.Json)
      • System.Text.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的简单操作,作者能力有限,文章中难免存在错误和纰漏,请指正,如果文章帮到了你,请帮忙点赞,三连支持。
👍👍👍
👍👍👍
👍👍👍

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年12月22日
下一篇 2023年12月22日

相关推荐