📅  最后修改于: 2023-12-03 15:29:47.515000             🧑  作者: Mango
在开发中,我们经常需要将对象转换为 JSON 格式,以便进行 API 接口传输或存储。C# 提供了强大的 JsonConvert 类库,可以帮助我们方便地将对象转换为 JSON 格式,并且可以控制 JSON 格式的输出方式。
以下是将 C# 对象转换为 JSON 格式的示例代码:
using Newtonsoft.Json;
// 定义一个类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
// 对象转 JSON 格式
var person = new Person { Name = "John", Age = 30, Gender = "Male" };
string json = JsonConvert.SerializeObject(person);
上面的代码中,我们首先定义了一个名为 Person 的类,我们将实例化这个类并将其转换为 JSON 格式。我们通过 JsonConvert.SerializeObject() 方法将 Person 对象转换为 JSON 格式,并将其放入一个名为 json 的字符串中。
结果示例:
{"Name":"John","Age":30,"Gender":"Male"}
如果要将 C# 对象转换为带格式的 JSON 格式,可以使用 Formatting 枚举。以下是示例代码:
string formattedJson = JsonConvert.SerializeObject(
person, Formatting.Indented);
通过 Formatting.Indented 可以让 JSON 格式的输出带有缩进,易于阅读。
结果示例:
{
"Name": "John",
"Age": 30,
"Gender": "Male"
}
除了 JsonConvert 类库,C# 还提供了 JavaScriptSerializer 类库,可以将对象转换为 JSON 格式。以下是将 C# 对象转换为 JSON 格式的示例代码:
using System.Web.Script.Serialization;
// 对象转 JSON 格式
var person = new Person { Name = "John", Age = 30, Gender = "Male" };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(person);
上面的代码中,我们首先引入了 System.Web.Script.Serialization 命名空间,并实例化了一个名为 serializer 的 JavaScriptSerializer 对象。利用 serializer 对象的 Serialize() 方法,我们将 person 对象转换为 JSON 格式并放入 json 变量中。
结果示例:
{"Name":"John","Age":30,"Gender":"Male"}
同样地,如果想要输出格式化后的 JSON 格式,可以使用 JsonSerializerSettings 类中的 Formatting 属性为 None 或 Indented,被设置为 Indented 时,输出带有缩进,易于阅读。
在本文中,我们学习了如何使用 C# 代码将对象转换为 JSON 格式,同时了解到 Newtonsoft.Json 和 JavaScriptSerializer 类库的使用方法。无论是哪种方法,都可以返回一个格式良好的 JSON 字符串,方便我们进行数据传输或数据存储。
完整代码示例:
using Newtonsoft.Json;
using System.Web.Script.Serialization;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
public class Program
{
public static void Main()
{
// Newtonsoft.Json 方法
var person1 = new Person { Name = "John", Age = 30, Gender = "Male" };
string json1 = JsonConvert.SerializeObject(person1);
string formattedJson = JsonConvert.SerializeObject(person1, Formatting.Indented);
// JavaScriptSerializer 方法
var person2 = new Person { Name = "Mary", Age = 25, Gender = "Female" };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json2 = serializer.Serialize(person2);
// 输出结果
Console.WriteLine($"Newtonsoft.Json 的结果:\n{json1}\n\n格式化后:\n{formattedJson}\n\nJavaScriptSerializer 的结果:\n{json2}");
}
}
输出结果:
Newtonsoft.Json 的结果:
{"Name":"John","Age":30,"Gender":"Male"}
格式化后:
{
"Name": "John",
"Age": 30,
"Gender": "Male"
}
JavaScriptSerializer 的结果:
{"Name":"Mary","Age":25,"Gender":"Female"}