이번엔 JSON이다.
JSON은 사실 나도 잘 모르는............
단순 XML같은 자료라고만 알고있다...
그리하여 JSON은 언어가 아니므로 어디서든 사용할 수 있는 만국 공통 자료형태라고 생각하면 좋을 것같다.
근데.. 이런 JSON을 왜 만들었나.. XML도있는데..?
파싱의 속도, 보기편함 등의 이유로 만들어졌다고 한다.
XML보다 파싱도 빠르고 보기도 편하다나.......
사실 실제 프로젝트에서 사용해본적은 없기에 아직까지 와닿진않는다....
그렇다고 사용하는법을 몰라선 안되는 법이니..
사용하는 법을 알아보자..!!
간단하게 class를 만들고 해당 class를 갖고있는 변수데이터를 JSON으로 만든 후 파일로 저장하는 코드를 확인해보도록 하자.
일단 JSON을 사용하기 위해서는 Nuget에서 Newtonsoft.Json을 설치해 주어야 한다.
간단하게 프로젝트에서 Nuget으로 들어가 Newtonsoft.Json을 검색하여 설치해주자
1.6G번이나 다운로드 된 상당한 녀석이다............
그 후 임의의 Car Class를 선언
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public enum TYPE
{
GASOLINE = 0,
DISSEL = 1,
ELECTRONIC =2
}
public class Car
{
private TYPE _CAR_TYPE;
public TYPE CAR_TYPE
{
get { return _CAR_TYPE; }
set { _CAR_TYPE = value; }
}
private string _manufacturer;
public string MANUFACTURER
{
get { return _manufacturer; }
set { _manufacturer = value; }
}
private int _price;
public int PRICE
{
get { return _price; }
set { _price = value; }
}
}
|
cs |
일반적인 Class이므로 설명따윈없다!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
List<Car> Car_List = new List<Car>();
var car1 = new Car();
car1.CAR_TYPE = TYPE.ELECTRONIC;
car1.MANUFACTURER = "TESLA";
car1.PRICE = 10000;
Car car2 = new Car();
car2.CAR_TYPE = TYPE.ELECTRONIC;
car2.MANUFACTURER = "HYUNDAI";
car2.PRICE = 8000;
Car car3 = new Car();
car3.CAR_TYPE = TYPE.ELECTRONIC;
car3.MANUFACTURER = "KIA";
car3.PRICE = 8500;
Car_List.Add(car1);
Car_List.Add(car2);
Car_List.Add(car3);
var json1 = JArray.FromObject(Car_List);
File.WriteAllText(Path.Combine(System.Environment.CurrentDirectory, "JSON_TEST.json"), json1.ToString());
|
cs |
Car Class를 가지고 List구조의 변수를 만들었다.
해당 데이터들을 위와같이 넣어준 후 JArray.FromObject를 해주면... 끝... 간단하다....
그리고 File.WriteAllText함수를 이용하여 path를 선언해주면 파일로 저장하기 끝!
위와 같은 파일이 생성된다.
그렇다면 JSON파일을 불러오려면 어떻게 해야 하는가..?
그것은 또 아래를 보면....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
string jsonFilePath = Path.Combine(System.Environment.CurrentDirectory, "JSON_TEST.json");
using (StreamReader file = File.OpenText(jsonFilePath))
{
using (JsonTextReader reader = new JsonTextReader(file))
{
JArray json = (JArray)JToken.ReadFrom(reader);
tb.Text = (string)json[0]["MANUFACTURER"] + Environment.NewLine;
tb.Text += Enum.Parse(typeof(TYPE), (string)json[0]["CAR_TYPE"]) + Environment.NewLine;
tb.Text += (string)json[0]["PRICE"] + Environment.NewLine;
tb.Text += Environment.NewLine;
tb.Text += Environment.NewLine;
// Json Data 전체 출력
tb.Text += json.ToString();
}
}
|
cs |
간단.....
저장한 파일을 StreamReader를 통해 불러온 후 JsonTextReader로 불러오면 끝난다.
각 모듈 데이터에 접근하기 위해서는 List Index를 검색하면되고, DataRow 데이터를 참조하듯 데이터를 가져오면 된다..
이상 끝!
프로젝트는 여기서!
https://drive.google.com/file/d/1-1-TXgGaElvbIoQIIdeQo6isZRLWByLL/view?usp=sharing