一、簡介
數據序列化是將數據從一種格式轉化為另一種格式的過程。在.NET開發中,常見的數據序列化方式有XML序列化和JSON序列化。本文著重講解第二種方式,即如何正確使用JsonConvert.SerializeObject進行數據序列化。
二、JsonConvert.SerializeObject基本概念
JsonConvert.SerializeObject是Json.NET庫中提供的一個方法,可以將.NET對象序列化為JSON字元串。這個方法的定義為:public static string SerializeObject(object value, Formatting formatting = Formatting.None, JsonSerializerSettings settings = null),其中value表示被序列化的對象,formatting表示JSON字元串格式化選項,settings表示序列化時用到的設置。
使用JsonConvert.SerializeObject需要引用相應的命名空間using Newtonsoft.Json;。
三、基本用法
下面我們通過一個簡單的例子來演示如何使用JsonConvert.SerializeObject進行數據序列化。
using System; using Newtonsoft.Json; class Program { static void Main(string[] args) { Person person = new Person() { Name = "張三", Age = 20 }; string jsonStr = JsonConvert.SerializeObject(person); Console.WriteLine(jsonStr); } } class Person { public string Name { get; set; } public int Age { get; set; } }
上面的代碼中,我們定義了一個Person類,裡面包含了姓名和年齡兩個屬性。在Main函數中,我們創建了一個Person對象,並將其序列化為了JSON字元串。輸出的結果為:{“Name”:”張三”,”Age”:20}。
可以看到,JsonConvert.SerializeObject將Person對象序列化為了符合JSON格式的字元串。其中,屬性名和屬性值之間用冒號隔開,屬性之間用逗號隔開,整個JSON字元串用花括弧包含。
四、JsonConvert.SerializeObject進階用法
1、格式化選項
JsonConvert.SerializeObject的第二個參數Formatting是用來設置JSON字元串的格式化選項的。默認情況下,JSON字元串是不進行格式化的。如果想在輸出時進行格式化,可以將Formatting設置為Formatting.Indented。
string jsonStr = JsonConvert.SerializeObject(person, Formatting.Indented);
上面的代碼中,我們將Formatting設置為Formatting.Indented,使JSON字元串輸出時進行了格式化。輸出結果為:
{ "Name": "張三", "Age": 20 }
2、修改屬性名
在某些情況下,我們需要將對象的屬性名序列化為不同的名稱。可以使用JsonPropertyAttribute來指定序列化時的屬性名。例如:
class Person { [JsonProperty(PropertyName = "personName")] public string Name { get; set; } [JsonProperty(PropertyName = "personAge")] public int Age { get; set; } }
在上面的代碼中,我們使用JsonPropertyAttribute來指定Name屬性序列化時的屬性名為personName,Age屬性的屬性名序列化時為personAge。
3、日期格式化
默認情況下,JsonConvert.SerializeObject在將日期類型對象序列化為JSON字元串時,只會將日期的UTC時間序列化。如果我們想更改日期序列化的格式,可以使用JsonSerializerSettings來進行設置。例如:
JsonSerializerSettings settings = new JsonSerializerSettings { DateFormatString = "yyyy-MM-dd HH:mm:ss" //設置日期格式化字元串 }; string jsonStr = JsonConvert.SerializeObject(person, Formatting.Indented, settings);
在上面的代碼中,我們創建了JsonSerializerSettings對象,並將DateFormatString屬性設置為”yyyy-MM-dd HH:mm:ss”,表示日期以這個格式輸出。然後將settings作為參數傳遞給SerialzieObject方法即可。
四、小結
本文從JsonConvert.SerializeObject基本概念、基本用法、進階用法三個方面對如何正確使用JsonConvert.SerializeObject進行數據序列化做了詳細的闡述。了解和掌握這個方法的用法,對於.NET開發工程師而言是非常重要的。
原創文章,作者:SLXG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149552.html