在 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': 'john@example.com'
}";

// 定义对应的类
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 = "jane@example.com"
};

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 版本。

相关推荐
码兄科技8 小时前
实战:基于Spring Boot + UniApp的地理信息小程序开发
spring boot·后端·uni-app
腾讯云云开发9 小时前
腾讯云 CloudBase 登上 WAIC:我们为 Agent 重新设计了云的生产线
后端
星栈10 小时前
从装一堆工具到看懂 Node 工程化思维:我的项目复盘记录
后端·node.js
65岁退休Coder10 小时前
LangChain v1.3.4 笔记 - 05 Agent 上下文记忆
后端
颜酱10 小时前
04 | 召回前置准备:搭好召回所需的四个数据库
前端·人工智能·后端
JaneConan10 小时前
鸿蒙 韶非 UI 系列:能力调用 startAbilityForResult,跳能力拿回参,鸿蒙能力路由入门
后端·harmonyos
晴空了无痕10 小时前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
用户83562907805110 小时前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
花椒技术11 小时前
原本要 2 天的服务端冒烟前置审查,为什么 3 分半就能出报告?|QA 质量交付实践(三)
后端·ai编程·测试
达达尼昂11 小时前
AI 编程的工程化实践:Flutter AI Harness 的设计与落地
人工智能·后端·全栈