2019-10-16 Json에 데이터 추가하기 쿠키런캐릭터

Console Programming/C# Console 2019. 10. 16. 16:57

character_data.json 변경전

[
  {
    "character_id": "100",
    "name": "용감한쿠키",
    "grade": "1",
    "resource_name": "cookie_brave_00"
  },
  {
    "character_id": "200",
    "name": "딸기맛쿠키",
    "grade": "2",
    "resource_name": "cookie_strawberry_01"
  },
  {
    "character_id": "201",
    "name": "버터크림 초코쿠키",
    "grade": "2",
    "resource_name": "cookie_buttercream_02"
  },
  {
    "character_id": "300",
    "name": "커피맛쿠키",
    "grade": "3",
    "resource_name": "cookie_coffee_03"
  }
]
namespace Syntax03
{
    class Program
    {
        static void Main(string[] args)
        {
            new App();
                        
        }
    }
}
using System;
using System.Collections.Generic;
using Newtonsoft.Json;


namespace Syntax03
{
    public class App
    {
        public App()
        {
            Console.WriteLine("파일 읽기 연습");

            //딕셔너리 컬렉션 선언
            Dictionary<int, CharacterData> dicCharacterData = new Dictionary<int, CharacterData>();

            //character_data.json 파일 읽어오기
            string path = @"C:\Workspace\Console1016\Syntax03\bin\Debug\character_data.json";

            //경로 출력하기
            Console.WriteLine(path);

            //경로에 파일이 있는지 확인
            bool isExists = System.IO.File.Exists(path);
            Console.WriteLine($"isExists : {isExists}");
            if(isExists)
            {
                string json = System.IO.File.ReadAllText(path);

                Console.WriteLine(json);
                CharacterData[] arrCharacterDatas = JsonConvert.DeserializeObject<CharacterData[]>(json);

                for(int i = 0; i<arrCharacterDatas.Length; i++)
                {
                    var data = arrCharacterDatas[i];
                    Console.WriteLine($"{data.character_id} {data.name} {data.grade} {data.resource_name}");
                    dicCharacterData.Add(data.character_id, data);
                }
            }
            foreach(KeyValuePair<int,CharacterData> pair in dicCharacterData)
            {
                Console.WriteLine($"{pair.Key} {pair.Value.name}");
            }


            CharacterData character1 = new CharacterData();
            character1.character_id = 400;
            character1.name = "쿠앤크쿠키";
            character1.grade = 1;
            character1.resource_name = "cookie_cnc_05";


            dicCharacterData.Add(character1.character_id, character1);

            CharacterData[] charactersSave = new CharacterData[dicCharacterData.Count];
            int j = 0;
            foreach (var pair in dicCharacterData)
            {
                charactersSave[j] = pair.Value;

                j++;
            }

            string json2 = JsonConvert.SerializeObject(charactersSave);
            System.IO.File.WriteAllText(path, json2);
                        
            Console.Read();
        }
    }
}
namespace Syntax03
{
    class CharacterData
    {
        public int character_id;
        public string name;
        public int grade;
        public string resource_name;
        public CharacterData()
        {
            
        }
    }
}

 

 

 

 

character_data.json 변경후
[{"character_id":100,"name":"용감한쿠키","grade":1,"resource_name":"cookie_brave_00"},{"character_id":200,"name":"딸기맛쿠키","grade":2,"resource_name":"cookie_strawberry_01"},{"character_id":201,"name":"버터크림 초코쿠키","grade":2,"resource_name":"cookie_buttercream_02"},{"character_id":300,"name":"커피맛쿠키","grade":3,"resource_name":"cookie_coffee_03"},{"character_id":400,"name":"쿠앤크쿠키","grade":1,"resource_name":"cookie_cnc_05"}]
: