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

C#下Newtonsoft.Json的具體使用

 更新時間:2025年07月23日 11:31:21   作者:生命不息-學(xué)無止境  
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ù),因其簡單、高效且功能強(qiáng)大。

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

安裝 Newtonsoft.Json

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

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

也可以使用以下命令通過 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(縮進(jìn))

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

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

輸出:

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

2. 處理復(fù)雜對象

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

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)對象,允許你在運(yùn)行時靈活地訪問 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,你可以更細(xì)粒度地控制 JSON 序列化和反序列化行為。

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

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

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

你可以通過實(shí)現(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 序列化和反序列化庫之一,具有強(qiáng)大的功能和易于使用的 API。它能夠處理簡單和復(fù)雜的對象,支持定制化序列化、反序列化,適用于動態(tài)對象以及復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

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

相關(guān)文章

最新評論

嘉义市| 顺平县| 江西省| 泰来县| 浮山县| 上蔡县| 玉龙| 信宜市| 资中县| 乌拉特前旗| 邯郸市| 文登市| 九江县| 茌平县| 新绛县| 溧水县| 轮台县| 民勤县| 延安市| 阿荣旗| 曲水县| 花莲县| 正定县| 嘉定区| 仁怀市| 灵山县| 漳浦县| 遂平县| 武邑县| 沙雅县| 青海省| 綦江县| 青浦区| 胶州市| 天峻县| 渝北区| 张北县| 克山县| 宿松县| 洪湖市| 秀山|