참고할거라서 먼저 코드부터 올리겠습니다 ' - '! (설명은 밑에 간단히)
(+ 빈 값을 자동으로 제거해주는 방법도 있습니다
JsonConvert.SerializeObject(data, //데이터
Formatting.Indented, //줄 바꿈 여부
new JsonSerializerSettings
{
DefaultValueHandling = DefaultvalueHandling.Ignore, //기본 값 제거
NullValueHandling = NullValueHandling.Ignore //NULL 값 제거
};
/*
Formatting.None : 줄 바꿈 없음
ex) { "a"="asd"}
Formatting.Indented : 줄 바꿈
ex)
{
"a" = "asd"
}
DefaultvalueHandling.Ignore : 문자 = null, 숫자 = 0 제거
NullValueHandling.Ignore : 문자 or 숫자 = null 제거
*/
예제 코드
using System;
using System.Collections.Generic;
using Newtonsoft.Json; //JsonProperty, JsonConvert
using Newtonsoft.Json.Linq; //JObject, JArray
using Newtonsoft.Json.Serialization; //Serialize, Deserialize
namespace ConsoleApp2
{
class Program
{
class TestClass
{
//이름이 동일한 곳으로 파싱됩니다.
//[JsonProperty("a")]
public int a;
//제이슨에서 xx변수를 b라고 호칭합니다.
[JsonProperty("b")]
public int xx;
//리스트(배열) 가능!
public List<string> c = new List<string>();
}
static void Main(string[] args)
{
//*********************직렬화*************************
TestClass test = new TestClass();
test.a = 1;
test.xx = 2;
test.c.Add("hi");
test.c.Add("ok");
string serialized = JsonConvert.SerializeObject(test);
string message = "{\"a\":1,\"b\":2,\"c\":[\"hi\",\"ok\"]}";
//xx가 JsonProperty에 의해 c로 변환 됩니다.
Console.WriteLine("serialized : {0}", serialized);
Console.WriteLine("message : {0}", message);
//***************** 파싱/ 역직렬화 ********************
//오브젝트 형태로 파싱하여 사용하기
JObject jObject = JObject.Parse(serialized);
JArray jArray = jObject["c"].ToObject<JArray>(); //JArray로 변환
Console.WriteLine("JObject : {0} {1}", jObject["a"], jObject["b"]);
Console.WriteLine("JArray : {0} {1}", jArray[0], jArray[1]);
//역직렬화 후 사용하기
TestClass testClass = JsonConvert.DeserializeObject<TestClass>(message);
Console.WriteLine("JsonConvert.DeserializeObject a:{0} b:{1}", testClass.a, testClass.xx);
Console.WriteLine("JsonConvert.DeserializeObject c[0]:{0} c[1]:{1}", testClass.c[0], testClass.c[1]);
//역직렬화 후 사용하기 (중간에 값이 빠져도 역직렬화 가능합니다!)
string message2 = "{ b:1 }";
TestClass testClass2 = JsonConvert.DeserializeObject<TestClass>(message2);
Console.WriteLine("JsonConvert.DeserializeObject a:{0} b:{1}", testClass2.a, testClass2.xx);
}
}
}
JSON : Java Script Object Notation 키와 값을 갖는 문자열 형태입니다.
ex) { name : "이름" , age : "33" }
웹상에서 데이터를 주고 받기 편하고 많이 사용합니다!
위의 코드에 기본적인 사용법은 적혀 있으니 참고하시기 바랍니다.
JObject 형태로 사용하거나 class로 직렬화/역직렬화 가능합니다.
클래스 없이도 JProperty 형태로 삽입 만들 수도 있답니다. (아니면 위의 message처럼 직접 써도 되구요~)
JObject obj = new JObject();
obj.Add(new JProperty("oo", "!!"));
Console.WriteLine(obj["oo"]); // !!
설치법
1. 비주얼스튜디오 "솔루션 NuGet 패키지 관리" 에서 다운 받을 수 있습니다.
2. Json 홈페이지에서 .dll 다운도 가능합니다.
도구 -> NuGet 패키지 관리자 -> 솔루션용 NuGet 패키지 관리
찾아보기 -> Json 검색 -> 오른쪽에서 설치 -> 솔루션 탐색기 참조에 생성됩니다.
using Newtonsoft.Json을 사용 가능해집니다!
'C# > Console' 카테고리의 다른 글
[C#] 금액 (숫자) -> 한글 (원)로 변환하기 (0) | 2023.01.23 |
---|---|
[C#] StructLayout : 클래스/구조체 크기 설정 (0) | 2022.08.03 |
[C#] 내 아이피 주소 보기 IPv4, IPv6 (0) | 2022.03.07 |
[C#] Regex.IsMatch 를 이용한 문자 존재 여부 판별 (정규식 작성) (0) | 2022.03.01 |
[C#] 윈도우 프로시저 탐색 및 포커싱 된 프로세스 접근하기 (0) | 2022.03.01 |