オブジェクトを JSON C# に変換する

WBOY
リリース: 2024-09-03 15:27:30
オリジナル
377 人が閲覧しました

オブジェクトを保存したり、後で取得したりするには、オブジェクトの現在の状態を取得する必要があります。これはコーディング時に考慮する必要があります。オブジェクトの状態を出力するためにカスタム コードが追加されます。これを、C# ではオブジェクトを Json 文字列に変換すると呼びます。そして、オブジェクトの種類に関する知識の種類に応じて、オブジェクトのすべてのプロパティに対してコーディングを行う必要があります。オブジェクト型の定義に変更があった場合は、コードを変更する必要があります。また、Newtonsoft の Json.NET ライブラリを利用してオブジェクトを C# の Json に変換し、コードを使用してオブジェクトの文字列の完全な表現を提供します。一行で書かれています。

構文:

Variable variable_name =Newtonsoft.Json.JsonConvert.SerializeObject(parameter);
ログイン後にコピー

C# でのオブジェクトの JSON 文字列への変換

  • C# でオブジェクトを Json 文字列に変換するだけのオブジェクトのシリアル化が、NewtonsoftJson を使用してどのように行われるかを見てみましょう。
  • オブジェクトを Json 文字列に変換する最初のステップとして、新しい Visual Studio プロジェクトが作成されます。
  • NewtonsoftJson は Nuget を使用してインストールされます。
  • シリアル化するためにサンプル クラスが作成されます。これは、オブジェクトを Json 文字列に変換することに他なりません。
  • 次に、オブジェクトを Json 文字列に変換するか、オブジェクトを C# でシリアル化するためのメソッドが作成されます。
  • 最後に、プログラムが実行されて C# でオブジェクトがシリアル化されます。これは、オブジェクトを C# の Json 文字列に変換することに他なりません。

オブジェクトを JSON C# に変換する例

言及されている例を以下に示します:

例 #1

オブジェクトの Json 文字列への変換を示す C# プログラム。これは C# でのオブジェクトのシリアル化に他なりません。

コード:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
//a namespace called Serial is defined
namespace Serial
{
//a class called Data is defined
public class Data
{
//a string variable is defined which can be set or retrieved using get or set method
public string Name1 { get; set; }
//a list is defined which can be set or retrieved using get or set method
public List<int> Ids { get; set; }
//a method called Print is defined in which the name and the list is printed
public void Print()
{
Console.WriteLine("The Name is: " + Name1);
Console.WriteLine("The Identifiers used are: " + string.Join<int>(",", Ids));
Console.WriteLine();
Console.WriteLine();
}
}
//a class called check is defined
public class Check
{
//a file path is defined and stored in a string variable
const string fPath = @"d:\ex.txt";
//Serialize method is defined in which instances of Json writer and Stream writer classes are defined to write into the file
public static void Serialize(object ob)
{
varserialise = new JsonSerializer();
using (var ns = new StreamWriter(fPath))
using (JsonWriter writer1 = new JsonTextWriter(ns))
{
serialise.Serialize(writer1, ob);
}
}
//Deserialize method is defined in which instances of Json text reader and Stream reader classes are defined to read from the file
public static object Deserialize(string pa)
{
varserialise = new JsonSerializer();
using (var ns = new StreamReader(pa))
using (var reader1 = new JsonTextReader(ns))
{
return serialise.Deserialize(reader1);
}
}
//main method is called
public static void Main(string[] args)
{
vardat = new Data
{
Name1 = "ShobhaShivakumar",
Ids = new List<int>{ 10, 20, 30, 40 }
};
Console.WriteLine("Before serialization of the objects, the list of the objects are:");
Console.WriteLine("-------------------------------------------------------------------");
Console.WriteLine();
dat.Print();
Serialize(dat);
vardeserialise = Deserialize(fPath);
Console.WriteLine("After de-serialization of the object, the objects are:");
Console.WriteLine("---------------------------");
Console.WriteLine();
Console.WriteLine(deserialise);
}
}
}
ログイン後にコピー

出力:

オブジェクトを JSON C# に変換する

説明:

  • 上記のプログラムでは、Serial という名前空間が定義されています。次に、Data というクラスが定義されます。次に、get または set メソッドを使用して設定または取得できる文字列変数が定義されます。次に、get または set メソッドを使用して設定または取得できるリストが定義されます。次に、名前とリストを出力する Print というメソッドが定義されます。次に、check というクラスが定義されます。次に、ファイル パスが定義され、文字列変数に保存されます。
  • 次に、Jsonwriter クラスと Streamwriter クラスのインスタンスを定義してファイルに書き込む Serialize メソッドを定義します。次に、ファイルから読み取るための Jsontext リーダーおよび Streamreader クラスのインスタンスを定義する De Serialize メソッドが定義されます。次に main メソッドが呼び出され、オブジェクトのシリアル化の前に出力を表示するメソッドが呼び出されます。

例 #2

プログラム内での手動シリアル化と Json シリアル化の違いを示す C# プログラム。

コード:

using System;
using System.Text;
using System.Collections.Generic;
//a class called check is defined
public class Check
{
//main method is called
public static void Main()
{
//an instance of the Create request1 class and string builder class is created
var request = CreateRequest1();
var output1 = new StringBuilder();
//Since we are using manual serialization here, we have to output the properties manually
output1.AppendFormat("The unique ID is: {0}\n", request.UniqueID);
output1.AppendFormat("The unique Name is: {0}\n", request.UniqueName);
output1.AppendFormat("The unique Surname is: {0}\n", request.UniqueSurname);
output1.AppendFormat("The Last Sign In is: {0}\n", request.UniqueLastSignIn);
//We need to make use of for loop to output the nested attributes in case of manual serialization
output1.AppendFormat("The Attributes are:\n");
foreach (varsh in request.UniqueAttributes)
{
output1.AppendFormat("    {0}\n", sh);
}
Console.WriteLine(output1.ToString());
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(request);
//We are using Json serialization to improve the readability
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(request, Newtonsoft.Json.Formatting.Indented));
}
//a method called Create request1 is defined
public static Req CreateRequest1()
{
return new Req
{
UniqueID = 10,
UniqueName = "Shobha",
UniqueSurname = "Shivakumar",
UniqueLastSignIn = DateTime.Now,
UniqueAttributes = new List<string>
{
"Beautiful",
"Tall",
"Intelligent",
"Wise",
}
};
}
//a class called req is created
public class Req
{
public intUniqueID {get;set;}
public string UniqueName {get;set;}
public string UniqueSurname {get;set;}
public DateTimeUniqueLastSignIn {get;set;}
public List<string>UniqueAttributes {get;set;}
}
}
ログイン後にコピー

出力:

オブジェクトを JSON C# に変換する

説明:

  • 上記のプログラムでは、checkというクラスが定義されています。次に main メソッドが呼び出されます。次に、Create request1 クラスと文字列ビルダー クラスのインスタンスが作成されます。ここでは手動シリアル化を使用しているため、プロパティを手動で出力する必要があります。次に、これは手動シリアル化の場合であるため、for ループを使用してネストされた属性を出力する必要があります。
  • 次に、可読性を向上させるために Json シリアル化を使用しています。次に、Create request1 というメソッドが定義されます。次に、req というクラスが作成され、すべての属性が get または set メソッドを使用して設定および取得されます。

以上がオブジェクトを JSON C# に変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート