C#对Json数据进行序列化

本文详细介绍如何在C#中处理复杂的JSON数据,包括下载和使用NuGet包、序列化和反序列化JSON字符串,以及从JSON数据中提取特定字段。通过实例演示,读者将学会如何操作具有多级嵌套的JSON数据。

json格式:我们常见的josn格式数据字符串有一般都是一对大括号({}),或者两对大括号的。下面就这2种常见的json格式的数据介绍一些对json格式的操作。

先了解下,我说的2种json格式:

第一种格式有一对大括号的:

第一种格式

第二种有两对大括号的:

{

    \"code\":\"200\",
    \"msg\":\"支付宝预下单成功\",
    \"body\": 
           {
             \"jobId\":\"20180906050141424500011624\",
             \"payUrl\":\"https://qr.ki/bax05439y7dkunnvqagki\",
             \"payFlowNumber\":\"20180906050141424500011624\"
           }
}

想必大家也都熟悉上面的两种json格式的数据,一对大括号的比较好处理,我就说下第二种格式的json数据字符串处理。

第一步:在C#中,想要对json格式的字符串进行处理,一定要先下载NuGet包

引用NuGet包

第二步:进行下载并安装NuGet包

第三步:进行using引用:

第四步:开始写代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace josn序列化
{
    class Program
    {
        static void Main(string[] args)
        {
            string strJosn = "{\"code\":\"200\",\"msg\":\"支付宝预下单成功\",\"body\":{\"jobId\":\"20180906050141424500011624\",\"payUrl\":\"https://qr.ki/bax05439y7dkunnvqagki\",\"payFlowNumber\":\"20180906050141424500011624\"}}";
            JObject obj = (JObject)JsonConvert.DeserializeObject(strJosn);  //序列化(也可使用JToken代替JObject)
            //JsonConvert与JObject必须引用using Newtonsoft.Json.Linq;这个命名空间
            string body = obj["body"].ToString();//得到strJosn里body的数据
            Console.WriteLine("把整个字符串进行序列化:");
            Console.WriteLine(obj);
            JObject bodyContent = (JObject)JsonConvert.DeserializeObject(body);  //对body里的数据进行序列化
            Console.WriteLine("把body里的数据进行序列化:");
            Console.WriteLine(bodyContent);
            Pay pCode = new Pay();//创建对象
            pCode.code = obj["code"].ToString();//拿到json里code的数据并且赋值给创建对象的code字段
            pCode.jobId = bodyContent["jobId"].ToString();
            Console.WriteLine("拿到josn里的Code值"+pCode.code);
            Console.Write("拿到body里的jobId"+pCode.jobId);
            Console.Read();
        }
    }
   
}

展示效果:

当然在Net中微软也给我们提供了进行对象序列化和反序列化的方法:

//进行对象序列化:
string json= JsonConvert.SerializeObject("你要序列化的对象");
//进行对象反序列化
string p = JsonConvert.DeserializeObject("需要反序列化的字符串");

 

### C# 中反序列化 JSON 文件的方法 为了实现 JSON 文件的反序列化,在 C# 中通常会使用 `Newtonsoft.Json` 库,这是一个非常流行且功能强大的库用于处理 JSON 数据。下面是一个完整的例子来展示如何从 JSON 文件中加载数据并将其转换成相应的对象。 #### 定义模型类 首先定义一个匹配 JSON 结构的 C# 类: ```csharp using System; public class Person { public string FirstName { get; set; } public string LastName { get; set; } public string QQ { get; set; } } ``` #### 编写读取和反序列化逻辑 接下来编写一段程序用来打开指定路径下的 JSON 文件,并利用 `JsonConvert.DeserializeObject<T>()` 方法完成反序列化操作[^1]。 ```csharp using System; using System.IO; using Newtonsoft.Json; class Program { static void Main() { var filePath = @"path\to\yourfile.json"; try { // 读取整个文件的内容到字符串变量中 string jsonString = File.ReadAllText(filePath); // 将 JSON 字符串反序列化为目标类型的实例 Person personObj = JsonConvert.DeserializeObject<Person>(jsonString); Console.WriteLine($"First Name: {personObj.FirstName}"); Console.WriteLine($"Last Name: {personObj.LastName}"); Console.WriteLine($"QQ Number: {personObj.QQ}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } ``` 这段代码展示了基本流程:先通过 `File.ReadAllText()` 函数获取 JSON 文本;再调用 `JsonConvert.DeserializeObject<T>()` 来把该文本映射至预先设计好的 .NET 对象上[^4]。 对于更复杂的场景比如嵌套的对象或者数组形式的数据结构,则只需要相应调整目标类型即可。如果遇到 Firebase 特定情况或者其他复杂环境因素影响到了正常工作的话,还需要额外注意网络配置等问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值