C#語(yǔ)言是微軟公司推出的一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。在C#中,我們常常需要將對(duì)象序列化為JSON格式的數(shù)據(jù)來進(jìn)行傳輸與存儲(chǔ)。JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,由于具有易讀、易寫的特點(diǎn),被廣泛應(yīng)用于Web應(yīng)用程序之間的數(shù)據(jù)傳輸。
使用C#對(duì)JSON進(jìn)行序列化需要借助Json.NET,在使用前需要安裝Nuget包。
PM> Install-Package Newtonsoft.Json
使用Json.NET對(duì)對(duì)象進(jìn)行序列化的基本代碼如下:
using Newtonsoft.Json;
using System;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person person = new Person
{
Name = "張三",
Age = 18
};
string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);
}
}
通過以上代碼,我們可以將Person對(duì)象序列化為JSON格式的字符串。
反之,若想將JSON格式的字符串反序列化為對(duì)象,則可使用以下代碼:
Person person = JsonConvert.DeserializeObject<Person>(json);
Json.NET還具有實(shí)現(xiàn)自定義序列化的功能,可根據(jù)需求來重載JsonConverter中的ReadJson與WriteJson方法,例如:
public class CustomConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
Person person = (Person)value;
writer.WriteStartObject();
writer.WritePropertyName("Name");
writer.WriteValue(person.Name.ToUpper());
writer.WritePropertyName("Age");
writer.WriteValue(person.Age + 10);
writer.WriteEndObject();
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Person);
}
}
以上代碼實(shí)現(xiàn)了將Person對(duì)象中Name屬性的值轉(zhuǎn)化為大寫字母,Age屬性的值加10,并將結(jié)果序列化為JSON格式的字符串的功能。
總之,C#通過Json.NET的強(qiáng)力支持使得對(duì)JSON的序列化與反序列化業(yè)務(wù)變得相對(duì)簡(jiǎn)單。