C# で JSON オブジェクトを作成する方法を説明する前に、まず JSON とは何かを理解しましょう。 JSON は JavaScript Object Notation の略です。データ交換に使用される非常に軽量なテキスト形式です。 JSON はオブジェクト、配列、文字列の 3 つのスタイルで表現できます。ここでは、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(); }
上記のステートメントでは、場所「filePath」で指定されたファイルに JSON データを書き込むための StreamWriter のオブジェクトを作成しました。次に、このオブジェクトを利用して、WriteLine() メソッドを使用して JSON データをファイルに書き込みました。
C# では、.NET ネイティブ ライブラリやサードパーティ パッケージを使用するなど、さまざまな方法で JSON オブジェクトを作成できます。
ネイティブ .NET ライブラリを使用して JSON オブジェクトを作成したい場合は、System.NET を追加する必要があります。 ServiceModel.Web をプロジェクトへの参照としてこの後、オブジェクトを JSON データにシリアル化し、JSON データを逆シリアル化する DataContractJsonSerializer というクラスを含むコード内に System.Runtime.Serialization.Json 名前空間をインポートできるようになります。オブジェクトに。
これとは別に、サードパーティのパッケージを使用して JSON を操作できます。 Newtonsoft.Json パッケージと同様です。このパッケージをインストールしてプロジェクトに追加するには、Visual Studio で以下の手順に従う必要があります:
これらの手順に従ってプロジェクトの参照を確認すると、「Newtonsoft.Json」が追加されます。
これで、.NET 型と JSON 型の間の変換メソッドを提供する JsonConvert というクラスを含むコードに Newtonsoft.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 中国語 Web サイトの他の関連記事を参照してください。