在讨论如何在 C# 中创建 JSON 对象之前,让我们先了解一下 JSON 是什么。 JSON 代表 JavaScript 对象表示法。它是一种非常轻量级的文本格式,用于交换数据。 JSON可以用三种样式表示,即对象、数组和字符串。在这里,我们将讨论 JSON 对象。 JSON 对象以“{”开头,以“}”结尾。 JSON 对象中的数据以键值对的形式存储,键和值之间用冒号“:”分隔,每个键值对之间用逗号“,”分隔。
语法:
使用Newtonsoft包创建JSON的语法如下:
ClassName objectName = new ClassName(); string jsonStr = JsonConvert.SerializeObject(objectName);
说明: 在上面的语法中,首先我们创建了需要 JSON 格式数据的类的对象,然后使用 Newtonsoft 包的 JsonConvert.Serialize() 方法并将我们的类对象传递为该方法的参数,该方法将对象的数据转换为 JSON 字符串后返回 JSON 字符串。
之后,我们可以使用以下语句将此 JSON 数据存储到文件中:
using(var streamWriter = new StreamWriter(filePath, true)) { streamWriter.WriteLine(jsonStr.ToString()); streamWriter.Close(); }
在上面的语句中,我们创建了一个 StreamWriter 对象,用于将 JSON 数据写入位置“filePath”指定的文件中。然后,借助该对象,我们使用 WriteLine() 方法将 JSON 数据写入文件。
在 C# 中,我们可以通过多种方式创建 JSON 对象,即使用 .NET 本机库或使用第三方包。
如果我们想使用原生.NET 库来创建 JSON 对象,那么我们需要添加 System. ServiceModel.Web 作为我们项目的引用,之后我们将能够在代码中导入 System.Runtime.Serialization.Json 命名空间,其中包含一个名为 DataContractJsonSerializer 的类,该类负责将对象序列化为 JSON 数据并反序列化 JSON 数据到物体。
除此之外,我们还可以使用第三方包来处理 JSON。就像 Newtonsoft.Json 包一样。要安装此包并将其添加到我们的项目中,我们需要在 Visual Studio 中执行以下步骤:
按照这些步骤操作后,当我们检查项目的引用时,我们将添加“Newtonsoft.Json”。
我们现在可以在代码中导入 Newtonsoft.Json 命名空间,其中包含一个名为 JsonConvert 的类,它提供了 .NET 类型和 JSON 类型之间的转换方法。
显示使用 .NET 本机库创建 JSON 对象的示例。
代码:
using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; namespace ConsoleApp4 { [DataContractAttribute] public class Student { [DataMemberAttribute] public int RollNo { get; set; } [DataMemberAttribute] public string FirstName { get; set; } [DataMemberAttribute] public string LastName { get; set; } [DataMemberAttribute] public string Address { get; set; } [DataMemberAttribute] public float TotalMarks { get; set; } public Student(int RollNo, string FirstName, string LastName, string Address, float TotalMarks) { this.RollNo = RollNo; this.FirstName = FirstName; this.LastName = LastName; this.Address = Address; this.TotalMarks = TotalMarks; } } public class Program { public static void Main(string[] args) { string jsonStr; Student student = new Student(1, "Gaurang", "Pandya", "Thane, Mumbai", 800); try { MemoryStream memoryStream = new MemoryStream(); //serializing object to JSON DataContractJsonSerializer ser = new DataContractJsonSerializer(student.GetType()); //writing JSON ser.WriteObject(memoryStream, student); memoryStream.Position = 0; StreamReader streamReader = new StreamReader(memoryStream); jsonStr = streamReader.ReadToEnd(); Console.WriteLine(jsonStr); } catch(Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } }
输出:
示例显示使用 .NET 本机库创建 JSON 对象,然后使用 StreamWriter 将生成的 JSON 数据写入文件。
代码:
using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; namespace ConsoleApp4 { [DataContractAttribute] public class Student { [DataMemberAttribute] public int RollNo; [DataMemberAttribute] public string FirstName; [DataMemberAttribute] public string LastName; [DataMemberAttribute] public string Address; [DataMemberAttribute] public float TotalMarks; public Student(int RollNo, string FirstName, string LastName, string Address, float TotalMarks) { this.RollNo = RollNo; this.FirstName = FirstName; this.LastName = LastName; this.Address = Address; this.TotalMarks = TotalMarks; } } public class Program { public static void Main(string[] args) { string jsonStr; string filePath = @"E:\Content\student.json"; Student student = new Student(1, "Gaurang", "Pandya", "Thane, Mumbai", 800); try { MemoryStream memoryStream = new MemoryStream(); //serializing object to JSON DataContractJsonSerializer ser = new DataContractJsonSerializer(student.GetType()); //writing JSON ser.WriteObject(memoryStream, student); memoryStream.Position = 0; StreamReader streamReader = new StreamReader(memoryStream); jsonStr = streamReader.ReadToEnd(); //checking if the file already exists if (File.Exists(filePath)) { //deleting file if it exists File.Delete(filePath); } //creating StreamWriter to write JSON data to file using (StreamWriter streamWriter = new StreamWriter(filePath, true)) { streamWriter.WriteLine(jsonStr.ToString()); streamWriter.Close(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } }
请在记事本中打开的student.json 文件中找到上述程序输出的屏幕截图。
输出:
显示使用 Newtonsoft 包创建 JSON 对象的示例。
代码:
using System; using Newtonsoft.Json; namespace ConsoleApp4 { public class Student { public int RollNo; public string FirstName; public string LastName; public string Address; public float TotalMarks; public Student(int RollNo, string FirstName, string LastName, string Address, float TotalMarks) { this.RollNo = RollNo; this.FirstName = FirstName; this.LastName = LastName; this.Address = Address; this.TotalMarks = TotalMarks; } } public class Program { public static void Main(string[] args) { string jsonStr; Student student = new Student(1, "Gaurang", "Pandya", "Thane, Mumbai", 800); try { //serializing student object to JSON string jsonStr = JsonConvert.SerializeObject(student); Console.WriteLine(jsonStr); } catch(Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } }
输出:
JSON 对象括在大括号内并包含键值对。键及其值由冒号分隔,其中键必须是字符串,值可以是任何有效的数据类型。 JSON 对象中的每个键值对均以逗号分隔。
以上是C# 创建 JSON 对象的详细内容。更多信息请关注PHP中文网其他相关文章!