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/

+ Recent posts