1. 설치
1.1. Manage nuget packages -> Browse [Newtonsoft.Json] 검색 -> Install
1.2. Nuget package manager -> Package Manager Console
PM> Install-Package Newtonsoft.Json
2. 사용명시
2.1. namespace등록
using Newtonsoft.Json.Linq;
3. 특징
2개의 Object를 사용
- JObject : JSON Object
- JObject 자체가 name값을 가질 수는 없습니다.
- (key, value) pair 들을 가질 수 있습니다.
- key : string 값입니다.
- value : JToken 타입이며 대부분의 premitive type들과 DateTime, TiemSpan, Uri 값을 직접대입 가능하며, 기타 Object도 입력이 가능합니다.
- value에 다른 JObject나, JArray를 넣을 수 있습니다.
- JArray : JSON Array
- JObject와 특징이 거의 비슷하나 key 없이 value 들을 가지고 있습니다.
즉, JObject나 Jarray 자체는 name을 가질 수 없으나, 다른 JObject에 value로 소속될 경우에는 key값을 가져야 하며, 다른 JArray에 소속될 경우에는 key값 없이 입력됩니다.
4. 사용법
4.1. JObject
생성
//생성 1 (공백)
var json = new JObject();
//생성 2 (JSON 형식의 문자열로 생성)
var json2 = JObject.Parse("{ id : \"Luna\" , name : \"Silver\" , age : 19 }");
//생성 3 (다른 class Object로부터 생성)
User u = new User { id = "SJ", name = "Philip", age = 25 };
var json3 = JObject.FromObject(u);
//생성 4 (무명형식으로 생성)
var json = JObject.FromObject(new { id = "J01", name = "June", age = 23 });
Element 추가
//.add(key, value)
var json = new JObject();
json.Add("id", "Luna");
json.Add("name", "Silver");
json.Add("age", 19);
//다른 JObject를 Element로 추가
var json2 = JObject.Parse("{ id : \"sjy\" , name : \"seok-joon\" , age : 27 }");
json2.Add("friend1", json);
//결과 형식
{
"id": "sjy",
"name": "seok-joon",
"age": 27,
"friend1": {
"id": "Luna",
"name": "Silver",
"age": 19
}
}
//JObject에 JArray 추가
var jFriends = new JArray();
jFriends.Add(json);
json2.Add("Friends", jFriends);
//결과 형식
{
"id": "sjy",
"name": "seok-joon",
"age": 27,
"friend1": {
"id": "Luna",
"name": "Silver",
"age": 19
},
"Friends": [
{
"id": "Luna",
"name": "Silver",
"age": 19
}
]
}
Element 사용
//var json_name = json["name"];
Console.WriteLine(json_name);
//Silver
Element 삭제
//.Remove(key)
json.Remove("name");
Console.WriteLine(json.ToString());
//결과
{
"id": "Luna",
"age": 19
}
//.RemoveAll() 모든 Element 삭제
json5.RemoveAll();
Console.WriteLine(json5.ToString());
//결과
{}
4.2. JArray (Element 입력시 key를 가지지 않는 다는 것을 빼고는 JObject와 거의 흡사)
Element 추가
// .Add(value);
var jarray = new JArray();
jarray.Add(1);
jarray.Add("Luna");
jarray.Add(DateTime.Now);
// JObject를 Element로 추가
var jFriends = new JArray();
jFriends.Add(json);
// JArray를 Element로 추가
var jarray2 = new JArray();
jarray2.Add(jarray);
jarray2.Add(jFriends);
Element 사용
var jf0 = jFriends[0];
//for, foreach 활용
foreach(JObject fElement in jFriends)
{
var fName = fElement["name"] ?? "<NULL>";
Console.WriteLine(fName);
}
Element 삭제
jFriends.Remove(jFriends[1]);
참고글 : devstarsj.github.io/development/2016/06/11/CSharp.NewtonJSON/