サーチ…


前書き

次のトピックでは、C#言語とシリアライゼーションと逆シリアル化の概念を使用してJsonを操作する方法を紹介します。

単純なJsonの例

{
    "id": 89,
    "name": "Aldous Huxley",
    "type": "Author",
    "books":[{
               "name": "Brave New World",
               "date": 1932 
             },
             {
               "name": "Eyeless in Gaza",
               "date": 1936
             },
             {
               "name": "The Genius and the Goddess",
               "date": 1955 
             }]  
}

あなたがJsonを初めてご存じでしたら、ここに例示的なチュートリアルがあります。

まず第一に:Jsonと連携するライブラリ

C#を使用してJsonを操作するには、Newtonsoft(.netライブラリ)を使用する必要があります。このライブラリは、プログラマがオブジェクトなどを直列化および逆直列化できるメソッドを提供します。メソッドとその使用方法の詳細を知りたい場合はチュートリアルがあります。

Visual Studioを使用している場合は、 Tools / Nuget Package Manager / Manage Package to Solution /に移動し、検索バーに「Newtonsoft」と入力してパッケージをインストールします。 NuGetをお持ちでない場合は、この詳細なチュートリアルを参考にしてください。

C#の実装

コードを読む前に、jsonを使ってアプリケーションをプログラミングするのに役立つ主な概念を理解することが重要です。

シリアライゼーション :アプリケーションを介して送信できるバイトストリームにオブジェクトを変換するプロセス。次のコードは、直列化して前のjsonに変換できます。

デシリアライゼーション :json /バイトのストリームをオブジェクトに変換するプロセス。その正反対のシリアル化のプロセス。前のjsonは、以下の例に示すように、C#オブジェクトに逆シリアル化できます。

これを実行するには、すでに説明したプロセスを使用するためにjson構造をクラスに変換することが重要です。 Visual Studioを使用する場合は、 「Edit / Paste Special / JSONをクラスとして貼り付け」を選択し、json構造を貼り付けるだけで、自動的にjsonをクラスに変換できます。

using Newtonsoft.Json;

  class Author
{
    [JsonProperty("id")] // Set the variable below to represent the json attribute 
    public int id;       //"id"
    [JsonProperty("name")]
    public string name;
    [JsonProperty("type")]
    public string type;
    [JsonProperty("books")]
    public Book[] books;

    public Author(int id, string name, string type, Book[] books) {
        this.id = id;
        this.name = name;
        this.type= type;
        this.books = books;
    }
}

 class Book
{
   [JsonProperty("name")]
   public string name;
   [JsonProperty("date")]
   public DateTime date;
}

シリアライゼーション

 static void Main(string[] args)
    {
        Book[] books = new Book[3];
        Author author = new Author(89,"Aldous Huxley","Author",books);
        string objectDeserialized = JsonConvert.SerializeObject(author); 
        //Converting author into json
    }

メソッド ".SerializeObject"は、 型オブジェクトをパラメータとして受け取るので、何かを型に入れることができます。

逆シリアル化

どこからでも、ファイルから、またはサーバーからでもjsonを受け取ることができるので、次のコードには含まれていません。

static void Main(string[] args)
{
    string jsonExample; // Has the previous json
    Author author = JsonConvert.DeserializeObject<Author>(jsonExample);
}

メソッド ".DeserializeObject"は、 " jsonExample "を " Author "オブジェクトに逆直列化します。このため、クラス定義にjson変数を設定することが重要なので、メソッドはそれを満たすためにアクセスします。

シリアライゼーションとデシリアライゼーション共通ユーティリティ関数

このサンプルは、すべての型オブジェクトの直列化および逆シリアル化に共通の機能でした。

using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;

namespace Framework
{
public static class IGUtilities
{
        public static string Serialization(this T obj)
        {
        string data = JsonConvert.SerializeObject(obj);
        return data;
        }

        public static T Deserialization(this string JsonData)
        {
        T copy = JsonConvert.DeserializeObject(JsonData);
        return copy;
        }

         public static T Clone(this T obj)
        {
            string data = JsonConvert.SerializeObject(obj);
            T copy = JsonConvert.DeserializeObject(data);
            return copy;
        }
}
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow