在 ASP.NET Web 应用中解析 JSON 数据实例

ASP.NET Web 应用中解析 JSON 数据有多种方法,取决于你使用的是传统的 Web Forms、MVC 还是现代的 Web API。以下是几种常见的解析方法:

1. 使用 Newtonsoft.Json (Json.NET)

这是最常用的 JSON 处理库,需要先安装 NuGet 包:

bash 复制代码
Install-Package Newtonsoft.Json

反序列化 JSON 到对象

cs 复制代码
using Newtonsoft.Json;

// JSON 字符串
string json = @"{
    'Name': 'John Doe',
    'Age': 30,
    'Email': '[email protected]'
}";

// 定义对应的类
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

// 反序列化
Person person = JsonConvert.DeserializeObject<Person>(json);

序列化对象到 JSON

cs 复制代码
Person person = new Person
{
    Name = "Jane Smith",
    Age = 28,
    Email = "[email protected]"
};

string json = JsonConvert.SerializeObject(person);

2. 使用 .NET 内置的 System.Text.Json (适用于 .NET Core 3.0+)

cs 复制代码
using System.Text.Json;

// 反序列化
Person person = JsonSerializer.Deserialize<Person>(json);

// 序列化
string json = JsonSerializer.Serialize(person);

3. 在 ASP.NET Web API 中自动处理 JSON

在 Web API 控制器中,框架会自动处理 JSON 的序列化和反序列化:

cs 复制代码
public class UsersController : ApiController
{
    // POST api/users
    public IHttpActionResult PostUser(Person person)
    {
        // person 参数会自动从请求的 JSON 体反序列化
        // 处理逻辑...
        return Ok();
    }
    
    // GET api/users/1
    public IHttpActionResult GetUser(int id)
    {
        Person person = GetPersonFromDatabase(id);
        return Ok(person); // 自动序列化为 JSON
    }
}

4. 在 ASP.NET MVC 中处理 JSON

接收 JSON 数据

cs 复制代码
[HttpPost]
public ActionResult ProcessJson()
{
    using (var reader = new StreamReader(Request.InputStream))
    {
        string json = reader.ReadToEnd();
        var person = JsonConvert.DeserializeObject<Person>(json);
        // 处理逻辑...
    }
    return Json(new { success = true });
}

返回 JSON 结果

cs 复制代码
public ActionResult GetUser(int id)
{
    Person person = GetPersonFromDatabase(id);
    return Json(person, JsonRequestBehavior.AllowGet);
}

5. 在客户端使用 JavaScript 处理

javascript 复制代码
// 发送 JSON 数据到服务器
$.ajax({
    url: '/api/users',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({ Name: "John", Age: 30 }),
    success: function(response) {
        console.log(response);
    }
});

// 接收服务器返回的 JSON
$.getJSON('/api/users/1', function(data) {
    console.log(data.Name);
});

注意事项

  1. 确保请求和响应的 Content-Type 设置为 application/json

  2. 对于大型 JSON 数据,考虑使用流式处理而不是一次性加载到内存

  3. 处理 JSON 时要考虑安全性,防范 JSON 注入攻击

  4. 对于复杂的 JSON 结构,确保你的模型类与之匹配

以上方法适用于不同版本的 ASP.NET,选择哪种取决于你的项目类型和 .NET 版本。

相关推荐
小旺不正经1 小时前
txt、Csv、Excel、JSON、SQL文件读取(Python)
sql·json·excel
草捏子3 小时前
主从延迟导致数据读不到?手把手教你架构级解决方案
后端
橘猫云计算机设计3 小时前
基于Python电影数据的实时分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
数据库·后端·python·信息可视化·小程序·毕业设计
Yolo@~3 小时前
SpringBoot无法访问静态资源文件CSS、Js问题
java·spring boot·后端
大鸡腿同学4 小时前
资源背后的成事密码
后端
Asthenia04124 小时前
使用 Spring Cloud Gateway 实现四种限流方案:固定窗口、滑动窗口、令牌桶与漏桶
后端
老李不敲代码5 小时前
榕壹云门店管理系统:基于Spring Boot+Mysql+UniApp的智慧解决方案
spring boot·后端·mysql·微信小程序·小程序·uni-app·软件需求
海风极客5 小时前
Go小技巧&易错点100例(二十五)
开发语言·后端·golang
喵手5 小时前
如何使用 Spring Boot 实现分页和排序?
数据库·spring boot·后端
Asthenia04125 小时前
使用 JMeter 测试博客新增接口的 QPS
后端