C#如何处理JSON

当使用C#开发Web应用或其他需要使用API的系统时,通常需要处理JSON来交换数据。JSON是一种轻量级的数据格式,易于读写和解析。下面是一些使用C#处理JSON的方法。

第一步:导入Newtonsoft.Json库

使用C#处理JSON的其中一种方法是使用Newtonsoft.Json库,它是一个开源的JSON框架,可以方便地将JSON字符串解析为C#对象或将C#对象序列化为JSON字符串。安装Newtonsoft.Json库,可以直接在NuGet包管理器中搜索 Newtonsoft.Json 进行安装,或手动下载并添加引用。

第二步:解析JSON字符串

使用Newtonsoft.Json库中的JsonConvert类,可以将JSON字符串解析为C#对象。以下是一个示例代码,解析包含三个学生信息的JSON字符串,将每个学生信息分别存储到一个Student对象中,并添加到List集合中:

using Newtonsoft.Json;
using System.Collections.Generic;

public class Student
{
   public string Name { get; set; }
   public int Age { get; set; }
   public int Grade { get; set; }
}

string jsonString = @"[
    { 'Name': 'Tom', 'Age': 18, 'Grade': 90 },
    { 'Name': 'Jerry', 'Age': 17, 'Grade': 85 },
    { 'Name': 'Lucy', 'Age': 16, 'Grade': 92 }
]";

List<Student> students = JsonConvert.DeserializeObject<List<Student>>(jsonString);

foreach (Student s in students)
{
    Console.WriteLine(s.Name + ", " + s.Age + ", " + s.Grade);
}

在这个例子中,JsonConvert.DeserializeObject() 方法将JSON字符串转化为List对象。然后循环遍历List并输出每个学生的基本信息。

第三步:将C#对象序列化为JSON字符串

将C#对象序列化为JSON字符串同样可以使用Newtonsoft.Json库。以下是一个示例代码,将一个Student对象序列化为JSON字符串:

using Newtonsoft.Json;

public class Student
{
   public string Name { get; set; }
   public int Age { get; set; }
   public int Grade { get; set; }
}

Student student = new Student()
{
    Name = "Tom",
    Age = 18,
    Grade = 90
};

string jsonString = JsonConvert.SerializeObject(student, Formatting.Indented);

Console.WriteLine(jsonString);

在这个例子中,JsonConvert.SerializeObject() 方法将Student对象序列化为JSON字符串,并使用Formatting.Indented设置缩进格式。最后将JSON字符串输出到控制台。

示例一

一个示例场景是从API获取到JSON数据(例如,获取天气信息),然后在C#应用程序中解析该数据并使用它来显示相关信息。假设我们要获取以华氏度为单位的纽约今天的最高和最低气温。以下是示例代码:

using Newtonsoft.Json;
using System;
using System.Net;

public class WeatherReport
{
    public double High { get; set; }
    public double Low { get; set; }
}

string jsonUrl = "http://api.openweathermap.org/data/2.5/weather?q=New%20York&units=imperial&appid=[YOUR-API-KEY]";
string json;

using (var webClient = new WebClient())
{
    json = webClient.DownloadString(jsonUrl);
}

dynamic jsonObj = JsonConvert.DeserializeObject(json);
double tempHigh = jsonObj.main.temp_max;
double tempLow = jsonObj.main.temp_min;

WeatherReport nyWeatherReport = new WeatherReport
{
    High = tempHigh,
    Low = tempLow
};

Console.WriteLine("New York City Weather Report Today:\nHigh: {0} F\nLow: {1} F", nyWeatherReport.High, nyWeatherReport.Low);

在这个例子中,使用WebClient对象向OpenWeather API发送HTTP GET请求。这个API返回JSON数据包含纽约的天气信息。接下来,JsonConvert.DeserializeObject() 方法解析JSON字符串,并将High和Low属性用于WeatherReport对象。最后,将WeatherReport对象的属性输出到控制台。

示例二

另一个示例场景是我们需要将数据以JSON的形式发送到API,以保存/更新数据。以下是示例代码:

using Newtonsoft.Json;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Department { get; set; }
}

List<Employee> employees = new List<Employee>
{
    new Employee { Id = 1, FirstName = "John", LastName = "Doe", Department = "Marketing" },
    new Employee { Id = 2, FirstName = "Jane", LastName = "Smith", Department = "IT" },
    new Employee { Id = 3, FirstName = "Mike", LastName = "Wilson", Department = "Sales" }
};

string apiEndpoint = "http://localhost:5000/api/employees"; //API endpoint
string jsonData = JsonConvert.SerializeObject(employees); // Convert list of employee objects to JSON string

var httpClient = new HttpClient();
HttpContent content = new StringContent(jsonData, Encoding.UTF8, "application/json"); //Sending JSON data

var responseMessage = httpClient.PutAsync(apiEndpoint, content).Result;
responseMessage.EnsureSuccessStatusCode();

string result = responseMessage.Content.ReadAsStringAsync().Result;

在这个例子中,首先创建包括三个Employee对象的List。然后使用JsonConvert.SerializeObject()方法将这个List序列化为JSON字符串,并设置HTTP请求的Content-Type为application/json。最后,使用HttpClient类发送PUT请求,并将JSON字符串作为请求的内容发送到API,将API的返回结果读取为字符串并输出到控制台。

以上是关于如何使用C#处理JSON的一个简单入门指南,主要引用的是Newtonsoft.Json库。希望本文对你学习和开发C#应用程序时处理JSON数据有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#如何处理JSON - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • C#中的正则表达式双引号问题

    C#中的正则表达式中双引号问题,主要是因为C#语言本身使用双引号来定义字符串,而正则表达式中也常常需要使用双引号来定义某些模式。因此,在将正则表达式作为字符串处理时,需要注意双引号字符的转义问题。 1. 双引号的转义 在C#中,要在字符串中插入双引号字符,需要使用反斜杠(\)字符进行转义,例如: string str = "This is a \&…

    C# 2023年6月7日
    00
  • C#实现封面图片生成器的示例代码

    下面我将为你详细讲解使用C#实现封面图片生成器的完整攻略。 1. 确定需求 在实现封面图片生成器前,我们需要明确需求: 需要生成一张图片 图片需要包含标题、封面图等元素 生成的图片需要具有可定制性 2. 安装依赖项 我们需要安装以下两个依赖项: SkiaSharp:是一个开源的2D图形库,适用于各种.NET平台。该库提供了对Skia图形引擎的封装,使开发者可…

    C# 2023年6月3日
    00
  • 手把手教你AspNetCore WebApi认证与授权的方法

    手把手教你AspNetCore WebApi认证与授权的方法 在ASP.NET Core WebApi中,认证和授权是非常重要的安全措施。在本攻略中,我们将介绍如何在ASP.NET Core WebApi中实现认证和授权,并提供两个示例说明。 步骤一:添加认证和授权中间件 首先,需要在ASP.NET Core WebApi中添加认证和授权中间件。可以使用以下…

    C# 2023年5月17日
    00
  • winform实现可拖动的自定义Label控件

    下面是实现winform可拖动自定义Label控件的攻略。 准备工作 新建winform项目,打开Visual Studio。 添加一个类库项目,用于编写自定义控件。 在类库项目中添加Winform命名空间,引用该命名空间中的控件。 编写自定义控件 在类库项目中新建一个类,继承自Label控件。 重写OnMouseDown、OnMouseMove、OnMou…

    C# 2023年6月1日
    00
  • asp.net GridView 删除时弹出确认对话框(包括内容提示)

    下面是关于“asp.net GridView 删除时弹出确认对话框(包括内容提示)”的完整攻略: 一、需求 我们需要在一个asp.net GridView中删除数据时,弹出确认对话框,同时包含内容提示,确保用户明确知道正在进行的操作。 二、实现步骤 1.在GridView中添加删除按钮。 在GridView的模板列中,添加一个“删除”按钮,并设置Comman…

    C# 2023年6月1日
    00
  • c# 接口使用实例

    下面是关于“C#接口使用实例”的完整攻略,包含两个示例。 1. 接口简介 在C#中,接口是一种定义了一组方法、属性和事件的类型,但没有提供实现的类型。接口可以被其他类型实现,从而使它们能够使用接口中定义的方法、属性和事件。接口可以用于实现多态性,从而提高代码的灵活性和可维护性。 2. 接口的使用 以下是一个示例,演示如何定义和实现一个接口: public i…

    C# 2023年5月15日
    00
  • C#利用VS中插件打包并发布winfrom程序

    下面我将为您详细讲解“C#利用VS中插件打包并发布winfrom程序”的完整攻略。 1. 安装插件 首先,您需要在Visual Studio中安装一个名为“Visual Studio Installer Projects”的插件。该插件可在Visual Studio扩展市场中免费下载。安装完成后,重启Visual Studio以使插件生效。 2. 创建安装包…

    C# 2023年5月15日
    00
  • Unity输出带点击跳转功能的Log实现技巧详解

    Unity输出带点击跳转功能的Log实现技巧详解 在Unity开发中,我们经常需要输出Log信息来检查程序运行的过程,但是在大项目中,很难快速定位到特定的代码行,于是带有点击跳转功能的Log输出就显得尤为重要。本文将详细介绍如何实现带有点击跳转功能的Log输出。 1. 前提条件 在实现具有点击跳转功能的Log输出之前,我们需要确保我们已经掌握了以下基础知识:…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部