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

C#下Newtonsoft.Json的具體使用

 更新時間:2025年07月23日 11:31:21   作者:生命不息-學無止境  
Newtonsoft.Json是一個非常流行的C# JSON 序列化和反序列化庫,它可以方便地將C#對象轉(zhuǎn)換為JSON 格式,或者將 JSON 數(shù)據(jù)解析為 C# 對象,下面就來介紹一下具體使用

Newtonsoft.Json 是一個非常流行的 C# JSON 序列化和反序列化庫,它可以方便地將 C# 對象轉(zhuǎn)換為 JSON 格式,或者將 JSON 數(shù)據(jù)解析為 C# 對象。Newtonsoft.Json 被廣泛用于處理 JSON 數(shù)據(jù),因其簡單、高效且功能強大。

以下是 Newtonsoft.Json 在 C# 中的詳細使用教程。

安裝 Newtonsoft.Json

在使用 Newtonsoft.Json 之前,你需要安裝它。最簡單的方式是通過 NuGet:

  1. 打開 Visual Studio。
  2. 在解決方案資源管理器中右鍵點擊項目,然后選擇“管理 NuGet 包”。
  3. 搜索 Newtonsoft.Json,然后點擊“安裝”。

也可以使用以下命令通過 NuGet 控制臺安裝:

Install-Package Newtonsoft.Json

基本用法

1. 序列化 C# 對象為 JSON

要將 C# 對象轉(zhuǎn)換為 JSON 字符串,可以使用 JsonConvert.SerializeObject() 方法。

using Newtonsoft.Json;

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

var person = new Person
{
    Name = "John",
    Age = 30
};

string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);

輸出:

{"Name":"John","Age":30}

2. 反序列化 JSON 為 C# 對象

要將 JSON 字符串轉(zhuǎn)換為 C# 對象,可以使用 JsonConvert.DeserializeObject<T>() 方法。

string json = "{\"Name\":\"John\",\"Age\":30}";

Person person = JsonConvert.DeserializeObject<Person>(json);
Console.WriteLine(person.Name);  // 輸出:John
Console.WriteLine(person.Age);   // 輸出:30

高級用法

1. 序列化時格式化 JSON(縮進)

為了提高可讀性,可以使用 Formatting.Indented 選項將 JSON 格式化為縮進的樣式:

string formattedJson = JsonConvert.SerializeObject(person, Formatting.Indented);
Console.WriteLine(formattedJson);

輸出:

{
  "Name": "John",
  "Age": 30
}

2. 處理復雜對象

Newtonsoft.Json 可以處理復雜的對象,例如包含嵌套對象或集合的對象。

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}

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

var person = new Person
{
    Name = "John",
    Age = 30,
    Address = new Address { Street = "123 Main St", City = "New York" }
};

string json = JsonConvert.SerializeObject(person, Formatting.Indented);
Console.WriteLine(json);

輸出:

{
  "Name": "John",
  "Age": 30,
  "Address": {
    "Street": "123 Main St",
    "City": "New York"
  }
}

3. 反序列化為動態(tài)對象

可以將 JSON 解析為動態(tài)對象,允許你在運行時靈活地訪問 JSON 數(shù)據(jù)。

string json = "{\"Name\":\"John\",\"Age\":30}";

dynamic obj = JsonConvert.DeserializeObject<dynamic>(json);
Console.WriteLine(obj.Name);  // 輸出:John
Console.WriteLine(obj.Age);   // 輸出:30

4. 忽略屬性

如果你不希望某些屬性被序列化,可以使用 JsonIgnore 特性。

public class Person
{
    public string Name { get; set; }

    [JsonIgnore]
    public int Age { get; set; }
}

var person = new Person
{
    Name = "John",
    Age = 30
};

string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);  // 輸出:{"Name":"John"}

5. 更改屬性名稱

可以使用 JsonProperty 特性為屬性指定自定義的 JSON 字段名稱。

public class Person
{
    [JsonProperty("full_name")]
    public string Name { get; set; }

    [JsonProperty("years")]
    public int Age { get; set; }
}

var person = new Person
{
    Name = "John",
    Age = 30
};

string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);  // 輸出:{"full_name":"John","years":30}

6. 處理枚舉

可以自定義枚舉的序列化方式,使其輸出字符串,而不是數(shù)字。

public enum Gender
{
    Male,
    Female
}

public class Person
{
    public string Name { get; set; }
    public Gender Gender { get; set; }
}

var person = new Person
{
    Name = "John",
    Gender = Gender.Male
};

string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);  // 輸出:{"Name":"John","Gender":0}

string jsonWithStringEnum = JsonConvert.SerializeObject(person, new StringEnumConverter());
Console.WriteLine(jsonWithStringEnum);  // 輸出:{"Name":"John","Gender":"Male"}

配置 JsonSerializerSettings

通過 JsonSerializerSettings,你可以更細粒度地控制 JSON 序列化和反序列化行為。

JsonSerializerSettings settings = new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore,
    DefaultValueHandling = DefaultValueHandling.Ignore
};

string json = JsonConvert.SerializeObject(person, settings);
Console.WriteLine(json);

處理自定義對象(自定義序列化與反序列化)

你可以通過實現(xiàn) JsonConverter 自定義對象的序列化和反序列化行為。

public class CustomPersonConverter : JsonConverter<Person>
{
    public override void WriteJson(JsonWriter writer, Person value, JsonSerializer serializer)
    {
        writer.WriteStartObject();
        writer.WritePropertyName("full_name");
        writer.WriteValue(value.Name);
        writer.WriteEndObject();
    }

    public override Person ReadJson(JsonReader reader, Type objectType, Person existingValue, bool hasExistingValue, JsonSerializer serializer)
    {
        JObject jo = JObject.Load(reader);
        return new Person { Name = (string)jo["full_name"] };
    }
}

var person = new Person { Name = "John", Age = 30 };
string customJson = JsonConvert.SerializeObject(person, new CustomPersonConverter());
Console.WriteLine(customJson);  // 輸出:{"full_name":"John"}

Person customPerson = JsonConvert.DeserializeObject<Person>(customJson, new CustomPersonConverter());
Console.WriteLine(customPerson.Name);  // 輸出:John

處理 JSON 數(shù)組

你可以將 JSON 數(shù)組序列化和反序列化為 C# 集合類型,如 List<T> 或數(shù)組。

string jsonArray = "[{\"Name\":\"John\",\"Age\":30},{\"Name\":\"Jane\",\"Age\":25}]";
List<Person> people = JsonConvert.DeserializeObject<List<Person>>(jsonArray);

foreach (var person in people)
{
    Console.WriteLine($"{person.Name}, {person.Age}");
}

總結(jié)

Newtonsoft.Json 是 C# 中最常用的 JSON 序列化和反序列化庫之一,具有強大的功能和易于使用的 API。它能夠處理簡單和復雜的對象,支持定制化序列化、反序列化,適用于動態(tài)對象以及復雜的數(shù)據(jù)結(jié)構(gòu)。

到此這篇關(guān)于C#下Newtonsoft.Json的具體使用的文章就介紹到這了,更多相關(guān)C# Newtonsoft.Json內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#獲取局域網(wǎng)MAC地址的簡單實例

    C#獲取局域網(wǎng)MAC地址的簡單實例

    這篇文章主要介紹了C#獲取局域網(wǎng)MAC地址的簡單實例,有需要的朋友可以參考一下
    2013-11-11
  • C#框架winform實現(xiàn)簡單點餐系統(tǒng)

    C#框架winform實現(xiàn)簡單點餐系統(tǒng)

    這篇文章主要為大家詳細介紹了C#框架winform實現(xiàn)簡單點餐系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#使用Exchange實現(xiàn)發(fā)送郵件

    C#使用Exchange實現(xiàn)發(fā)送郵件

    最近項目中需要用到exchange的操作,所以本文就參照msdn弄了一個簡單的C#操作類,實現(xiàn)了發(fā)送郵件和拉取收件箱的功能,感興趣的小伙伴可以了解下
    2023-10-10
  • 利用多線程句柄設(shè)置鼠標忙碌狀態(tài)的實現(xiàn)方法

    利用多線程句柄設(shè)置鼠標忙碌狀態(tài)的實現(xiàn)方法

    怎樣利用多線程句柄設(shè)置鼠標忙碌狀態(tài)呢?下面小編就為大家介紹一下具體的實現(xiàn)方法吧!需要的朋友可以過來參考下
    2013-08-08
  • C# WPF實現(xiàn)讀寫CAN數(shù)據(jù)

    C# WPF實現(xiàn)讀寫CAN數(shù)據(jù)

    這篇文章主要介紹了C# WPF實現(xiàn)讀寫CAN數(shù)據(jù),文中通過代碼示例給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • 詳解C#如何手動改變自制窗體的大小

    詳解C#如何手動改變自制窗體的大小

    這篇文章主要為大家詳細介紹了在C#中如何實現(xiàn)手動改變自制窗體的大小,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • C# 正則表達式進階

    C# 正則表達式進階

    這篇文章主要介紹了C# 正則表達式進階,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    本文主要介紹了面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài),提供了簡單的示例供大家參考和理解。
    2016-03-03
  • C# WindowsForm程序同時啟動多個窗口類

    C# WindowsForm程序同時啟動多個窗口類

    這篇文章主要為大家詳細介紹了C# WindowsForm程序同時啟動多個窗口類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#中DataGridView的樣式

    C#中DataGridView的樣式

    這篇文章主要介紹了C#中DataGridView的樣式設(shè)置方法,包括交替行顏色、單元格內(nèi)容有效性檢查、單元格的選擇模式等,需要的朋友可以參考下
    2015-02-02

最新評論

贵州省| 吐鲁番市| 连云港市| 墨玉县| 柘城县| 哈密市| 江川县| 柳江县| 福鼎市| 尉氏县| 如皋市| 榕江县| 固始县| 得荣县| 平和县| 灵武市| 林口县| 济南市| 延津县| 宁强县| 林周县| 法库县| 徐州市| 金秀| 宜川县| 兰坪| 上饶市| 昔阳县| 崇州市| 阳曲县| 古交市| 姚安县| 富裕县| 安国市| 宝坻区| 绥宁县| 乌鲁木齐县| 扶绥县| 彰武县| 抚远县| 孟津县|