最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.NET 對(duì)象轉(zhuǎn)Json的幾種常見方式

 更新時(shí)間:2025年11月02日 16:02:38   作者:Yashar Qian  
本文介紹了.NET中將對(duì)象轉(zhuǎn)換為JSON的常用方法,包括使用System.Text.Json和Newtonsoft.Json,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在.NET中將對(duì)象轉(zhuǎn)換為JSON有多種方法,以下是常用的幾種方式:

1. 使用 System.Text.Json (推薦,.NET Core 3.0+)

基本序列化

using System.Text.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

// 對(duì)象轉(zhuǎn)JSON
var person = new Person { Name = "張三", Age = 25, Email = "zhangsan@example.com" };
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
// 輸出: {"Name":"張三","Age":25,"Email":"zhangsan@example.com"}

帶選項(xiàng)的序列化

var options = new JsonSerializerOptions
{
    WriteIndented = true, // 格式化輸出
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase // 駝峰命名
};

string jsonString = JsonSerializer.Serialize(person, options);
Console.WriteLine(jsonString);
// 輸出:
// {
//   "name": "張三",
//   "age": 25,
//   "email": "zhangsan@example.com"
// }

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

首先安裝 NuGet 包:

Install-Package Newtonsoft.Json
using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

// 基本序列化
var person = new Person { Name = "李四", Age = 30, Email = "lisi@example.com" };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString);

// 帶格式的序列化
string formattedJson = JsonConvert.SerializeObject(person, Formatting.Indented);
Console.WriteLine(formattedJson);

Newtonsoft.Json 高級(jí)用法

var settings = new JsonSerializerSettings
{
    Formatting = Formatting.Indented,
    NullValueHandling = NullValueHandling.Ignore,
    DateFormatString = "yyyy-MM-dd HH:mm:ss"
};

string jsonString = JsonConvert.SerializeObject(person, settings);

3. 處理復(fù)雜對(duì)象

包含集合的對(duì)象

public class Department
{
    public string Name { get; set; }
    public List<Person> Employees { get; set; }
}

var department = new Department
{
    Name = "技術(shù)部",
    Employees = new List<Person>
    {
        new Person { Name = "王五", Age = 28, Email = "wangwu@example.com" },
        new Person { Name = "趙六", Age = 32, Email = "zhaoliu@example.com" }
    }
};

string jsonString = JsonSerializer.Serialize(department, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(jsonString);

匿名對(duì)象序列化

var anonymousObject = new
{
    Id = 1,
    Description = "測(cè)試對(duì)象",
    CreateTime = DateTime.Now
};

string jsonString = JsonSerializer.Serialize(anonymousObject);
Console.WriteLine(jsonString);

4. 自定義序列化選項(xiàng)

System.Text.Json 自定義

var options = new JsonSerializerOptions
{
    WriteIndented = true,
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
    Converters = { new JsonStringEnumConverter() } // 枚舉轉(zhuǎn)換為字符串
};

string jsonString = JsonSerializer.Serialize(person, options);

使用特性控制序列化

public class Product
{
    [JsonPropertyName("productName")] // System.Text.Json
    public string Name { get; set; }
    
    [JsonIgnore] // 忽略該屬性
    public string InternalCode { get; set; }
    
    [JsonPropertyOrder(1)] // 屬性順序
    public decimal Price { get; set; }
}

5. 性能優(yōu)化

使用源生成器 (System.Text.Json)

[JsonSerializable(typeof(Person))]
[JsonSerializable(typeof(List<Person>))]
public partial class MyJsonContext : JsonSerializerContext
{
}

// 使用源生成器進(jìn)行序列化
var person = new Person { Name = "測(cè)試", Age = 25 };
string jsonString = JsonSerializer.Serialize(person, MyJsonContext.Default.Person);

選擇建議

  • 新項(xiàng)目:推薦使用 System.Text.Json,性能更好,無(wú)需額外依賴
  • 現(xiàn)有項(xiàng)目:如果已經(jīng)在使用 Newtonsoft.Json,可以繼續(xù)使用
  • 復(fù)雜場(chǎng)景:Newtonsoft.Json 功能更豐富,支持更多復(fù)雜場(chǎng)景

兩種方法都很常用,根據(jù)項(xiàng)目需求和個(gè)人偏好選擇即可。

到此這篇關(guān)于.NET 對(duì)象轉(zhuǎn)Json的幾種常見方式的文章就介紹到這了,更多相關(guān).NET 對(duì)象轉(zhuǎn)Json內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

宁化县| 邓州市| 华亭县| 寻甸| 德兴市| 林芝县| 建瓯市| 平乐县| 辛集市| 太保市| 白水县| 乐山市| 北宁市| 阳高县| 安平县| 泾川县| 许昌市| 房产| 含山县| 耿马| 古丈县| 红原县| 三穗县| 清丰县| 南昌县| 桂东县| 维西| 竹北市| 江孜县| 武汉市| 娱乐| 孝义市| 聂拉木县| 玉门市| 兴海县| 阿荣旗| 新竹市| 阿巴嘎旗| 营山县| 新营市| 五峰|