様々なデータ型のJSONフォーマット保存

2019年6月11日

List<List>型で保存

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;

namespace LoadSaveSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Player hero = new Player();
            hero.Name = "さいたま";
            hero.Hp = 1000;
            Player hero1 = new Player();
            hero1.Name = "ボス";
            hero1.Hp = 100;

            List<Player> firstPlayers = new List<Player>();
            firstPlayers.Add(hero);

            List<Player> secondPlayers = new List<Player>();
            secondPlayers.Add(hero);
            secondPlayers.Add(hero1);

            List<List<Player>> players = new List<List<Player>>();
            players.Add(firstPlayers);
            players.Add(secondPlayers);

            // ユーザー定義型 -> JSON オブジェクト -> 文字列
            string jsonSave = JToken.FromObject(players).ToString();
            // すべてのデータをテキストファイルに保存
            File.WriteAllText("player.json", jsonSave);

            // すべてのデータを読み込んでjsonLoad変数に代入
            string jsonLoad = File.ReadAllText("player.json");

            //// プログラムの終了時にコンソールが閉じないようにする
            Console.ReadKey();

        }
    }
    class Player
    {
        public string Name;
        public int Hp;
    }
}

Classで保存1(Class内にさらにClass)

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;

namespace LoadSaveSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Setting setting = new Setting();
            Display lowResolv = new Display { Resolution = "低解像度", Size = "4096*2048" };
            setting.display = lowResolv;

            Sound highSound = new Sound { MainVolume = 55, EffectVolume = 54 };
            setting.sound = highSound;

            // ユーザー定義型 -> JSON オブジェクト -> 文字列
            string jsonSave = JToken.FromObject(setting).ToString();
            // すべてのデータをテキストファイルに保存
            File.WriteAllText("setting.json", jsonSave);

            // すべてのデータを読み込んでjsonLoad変数に代入
            string jsonLoad = File.ReadAllText("setting.json");

            // JSONフォーマットのデータをPlayer型でデシリアライズ。copyHeroに代入。
            Setting newSetting = JsonConvert.DeserializeObject<Setting>(jsonLoad);

            //// プログラムの終了時にコンソールが閉じないようにする
            Console.ReadKey();

        }
    }
    class Setting
    {
        public Display display;
        public Sound sound;
    }
    class Display
    {
        public string Resolution;
        public string Size;
    }
    class Sound
    {
        public int MainVolume;
        public int EffectVolume;
    }
}

Classで保存2(Class内にさらにClass)

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;

namespace LoadSaveSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Setting setting = new Setting();
            setting.display.Resolution = "低解像度";
            setting.display.Size = "4096*2048";
            setting.sound.MainVolume = 55;
            setting.sound.EffectVolume = 54;

            // ユーザー定義型 -> JSON オブジェクト -> 文字列
            string jsonSave = JToken.FromObject(setting).ToString();
            // すべてのデータをテキストファイルに保存
            File.WriteAllText("setting.json", jsonSave);

            // すべてのデータを読み込んでjsonLoad変数に代入
            string jsonLoad = File.ReadAllText("setting.json");

            // JSONフォーマットのデータをPlayer型でデシリアライズ。copyHeroに代入。
            Setting newSetting = JsonConvert.DeserializeObject<Setting>(jsonLoad);

            //// プログラムの終了時にコンソールが閉じないようにする
            Console.ReadKey();

        }
    }
    class Setting
    {
        public Display display = new Display();
        public Sound sound = new Sound();
    }
    class Display
    {
        public string Resolution = "高解像度";
        public string Size = "1024*768";
    }
    class Sound
    {
        public int MainVolume = 10;
        public int EffectVolume = 5;
    }
}

2019年6月11日C#,JSON

Posted by hidepon