C#프로그래밍

엑셀데이터를 JSON, JSON online viewer

다모아 2023. 7. 27. 16:09

https://jsonviewer.stack.hu/

 

Online JSON Viewer

 

jsonviewer.stack.hu

 

객체

{

"name":"홍길동"

}

 

배열

[
  {
    "name": "장검",
    "damage": 12
  },
  {
    "name": "단검",
    "damage": 9
  }
]

 

https://shancarter.github.io/mr-data-converter/

 

Mr. Data Converter

 

shancarter.github.io

 

1.엑셀 파일 만든다

2. Mr.Convert가서 엑셀 데이터를 JSON문자열로 변환

3. Json Onlinve Viewer 유효성 체크 + 타입 객체 제거

4. JSON 문자열 복사 후  메모장에 item_data.json으로 저장

5. 내 visual studio 파일 실행 폴더 bin > Debug 안에다가 item_data.json 넣기

5. using System.IO; 해주기

6. App 클래스에 string json = File ReadAllText("./item_data.json");

7. Console.WriteLine(json); 해주기

8. Mapping 클래스 만들기 [App 클래스 만든거마냥 ItemData로 만들으라는 뜻]

9.이름은 ItemData.cs // 비슷하게 대문자로 만들기 , 엑셀 파일대로 public int id, string name ... 만들기]

특징 - 엑셀데이터의 컬럼명과 타입이 동일) , 생성자 안만듦

10. 도구 -> nuget관리자 -> 솔루션 용 nuget -> 찾아보기 -> 프로젝트 체크 -> NetJson설치

11. using Newtonsoft;

using Newtonsoft.Json;

12. 역직렬화

13. Dictionary에 담는다

 


using System;
using System.Collections.Generic;
using System.Data;
using System.Dynamic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft;
using Newtonsoft.Json;

namespace FakeInventory
{
    public class App
    {
        Dictionary<int, ItemData> dicItemDatas;
        //생성자
        public App()
        {
            string json = File.ReadAllText("./item_data.json");
            //문자열 -> 객체 ( 역직렬화 )
            ItemData[] arrItemDatas = JsonConvert.DeserializeObject<ItemData[]>(json);
            Console.WriteLine(arrItemDatas.Length);

            //컬렉션 사용전 반드시 인스턴스화
            dicItemDatas = new Dictionary<int, ItemData>();

            foreach (ItemData data in arrItemDatas)
            {
                Console.WriteLine("{0} {1} {2}",data.name, data.id , data.damage);
                dicItemDatas.Add(data.id, data);
            }

            Console.WriteLine(dicItemDatas.Count);
            foreach (KeyValuePair<int, ItemData> pair in this.dicItemDatas)
            {
                ItemData data = pair.Value;
                Console.WriteLine("{0} {1} {2}", data.name, data.id, data.damage);
            }
            //객체 -> 문자열 ( 직렬화 )
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FakeInventory
{
    public class ItemData
    {
        public int id;
        public string name;
        public int damage;
        
    }
}

'C#프로그래밍' 카테고리의 다른 글

장비 착용, 몬스터 공격, 인벤토리, 아이템 지급  (0) 2023.07.28
JSON  (0) 2023.07.27
람다, Action<T> , Func<T>  (0) 2023.07.27
대리자, 무명메서드  (0) 2023.07.27
List, Dictionary 복습  (0) 2023.07.27