首页  >  文章  >  后端开发  >  C# 创建 JSON 对象

C# 创建 JSON 对象

WBOY
WBOY原创
2024-09-03 15:31:12731浏览

在讨论如何在 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 对象?

在 C# 中,我们可以通过多种方式创建 JSON 对象,即使用 .NET 本机库或使用第三方包。

如果我们想使用原生.NET 库来创建 JSON 对象,那么我们需要添加 System. ServiceModel.Web 作为我们项目的引用,之后我们将能够在代码中导入 System.Runtime.Serialization.Json 命名空间,其中包含一个名为 DataContractJsonSerializer 的类,该类负责将对象序列化为 JSON 数据并反序列化 JSON 数据到物体。

除此之外,我们还可以使用第三方包来处理 JSON。就像 Newtonsoft.Json 包一样。要安装此包并将其添加到我们的项目中,我们需要在 Visual Studio 中执行以下步骤:

  • 转到“工具”> NuGet 包管理器 >管理解决方案的 NuGet 包。

C# 创建 JSON 对象

  • 在“浏览”选项卡下搜索“Newtonsoft.Json”包并从显示的结果中选择它,然后选择要添加此包的项目。
  • 点击安装按钮。

C# 创建 JSON 对象

按照这些步骤操作后,当我们检查项目的引用时,我们将添加“Newtonsoft.Json”。

我们现在可以在代码中导入 Newtonsoft.Json 命名空间,其中包含一个名为 JsonConvert 的类,它提供了 .NET 类型和 JSON 类型之间的转换方法。

C# 创建 JSON 对象的示例

显示使用 .NET 本机库创建 JSON 对象的示例。

示例#1

代码:

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();
}
}
}

输出:

C# 创建 JSON 对象

示例#2

示例显示使用 .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 文件中找到上述程序输出的屏幕截图。

输出:

C# 创建 JSON 对象

示例#3

显示使用 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();
}
}
}

输出:

C# 创建 JSON 对象

结论

JSON 对象括在大括号内并包含键值对。键及其值由冒号分隔,其中键必须是字符串,值可以是任何有效的数据类型。 JSON 对象中的每个键值对均以逗号分隔。

以上是C# 创建 JSON 对象的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:C# Tuples下一篇:Partial in C#