출처: https://devstarsj.github.io/2016/06/12/CSharp.NewtonJSON/
Newtonsoft.Json 사용법
C# 에서 JSON document를 다루기 위해 가장 많이 사용되는 것은 Newtonsoft.Json
입니다.
nuget manager에서 JSON
으로 검색시 가장 먼저 나옵니다.
그만큼 많이 사용되며, 사용법 또한 간단합니다.
##1. 설치 및 namespace
솔루션 탐색기 (Solution Explorer)에서 마우스 우클릭 하신뒤 Manage nuget packages...
을 누르셔서 Browse
탭에서 Newtonsoft.Json
을 검색하셔서 Install
을 누르면 됩니다.
다른 방법으로는 도구(Tools) -> Nuget package manager
-> Package Manager Console
로 가셔서 아래와 같이 입력하시면 됩니다.
1
| PM> Install-Package Newtonsoft.Json
|
사용시 소스코드에서 아래의 namespace
를 추가해 주시면 됩니다.
1
| using Newtonsoft.Json.Linq;
|
2. 간단한 특징 설명
2개의 Object를 이용해서 사용하시면 됩니다.
즉, JObject
나 Jarray
자체는 name
을 가질 수 없으나, 다른 JObject
에 value
로 소속될 경우에는 key
값을 가져야 하며, 다른 JArray
에 소속될 경우에는 key
값 없이 입력됩니다
3. JObject 사용법
너무나 간단하기 때문에 별도 설명은 필요 없을듯 합니다.
- 생성 :
new JObject()
- Element 추가 :
.add(key, value)
바로 예제를 보도록 하겠습니다.
3.1 Element 추가
3.1.1 기본적인 사용법
1 2 3 4 5 6
| var json = new JObject(); json.Add("id", "Luna"); json.Add("name", "Silver"); json.Add("age", 19); Console.WriteLine(json.ToString());
|
1 2 3 4 5
| { "id": "Luna", "name": "Silver", "age": 19 }
|
3.1.2 JSON 형식의 문자열로 생성
1 2 3 4
| var json2 = JObject.Parse("{ id : \"Luna\" , name : \"Silver\" , age : 19 }"); json2.Add("blog", "devluna.blogspot.kr"); Console.WriteLine(json2.ToString());
|
1 2 3 4 5 6
| { "id": "Luna", "name": "Silver", "age": 19, "blog": "devluna.blogspot.kr" }
|
3.1.3 다른 class Object로부터 생성
1 2 3 4
| User u = new User { id = "SJ", name = "Philip", age = 25 }; var json3 = JObject.FromObject(u); Console.WriteLine(json3.ToString());
|
1 2 3 4 5
| { "id": "SJ", "name": "Philip", "age": 25 }
|
3.1.4 무명형식으로 생성
1 2 3
| var json4 = JObject.FromObject(new { id = "J01", name = "June", age = 23 }); Console.WriteLine(json4.ToString());
|
1 2 3 4 5
| { "id": "J01", "name": "June", "age": 23 }
|
3.1.5 다른 JObject를 Element로 추가
1 2 3 4 5 6 7
| var json5 = JObject.Parse("{ id : \"sjy\" , name : \"seok-joon\" , age : 27 }"); json5.Add("friend1", json); json5.Add("friend2", json2); json5.Add("friend3", json3); json5.Add("friend4", json4); Console.WriteLine(json5.ToString());
|
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
| { "id": "sjy", "name": "seok-joon", "age": 27, "friend1": { "id": "Luna", "name": "Silver", "age": 19 }, "friend2": { "id": "Luna", "name": "Silver", "age": 19, "blog": "devluna.blogspot.kr" }, "friend3": { "id": "SJ", "name": "Philip", "age": 25 }, "friend4": { "id": "J01", "name": "June", "age": 23 } }
|
3.2 Element값 사용하기
3.2.1 Element값 읽기
[ ]
연산자에 key값을 넣어주면 해당 value를 얻을 수 있습니다.
1 2 3
| var json4_name = json4["name"]; Console.WriteLine(json4_name);
|
3.2.2 Element값 삭제하기
.Remove(key)
를 이용해서 삭제가 가능합니다.
1 2 3
| json4.Remove("name"); Console.WriteLine(json4.ToString());
|
1 2 3 4
| { "id": "J01", "age": 23 }
|
.RemoveAll()
로 모든 Element를 다 삭제 할 수도 있습니다.
1 2 3
| json5.RemoveAll(); Console.WriteLine(json5.ToString());
|
4. JArray 사용법
Element 입력시 key를 가지지 않는 다는 것을 빼고는 JObject와 거의 같습니다.
4.1 Element 추가하기
4.1.1 기본적인 사용법
1 2 3 4 5 6
| var jarray = new JArray(); jarray.Add(1); jarray.Add("Luna"); jarray.Add(DateTime.Now); Console.WriteLine(jarray.ToString());
|
1 2 3 4 5
| [ 1, "Luna", "2016-05-21T09:45:27.1049839+09:00" ]
|
4.1.2 JObject를 Element로 추가
1 2 3 4 5 6 7
| var jFriends = new JArray(); jFriends.Add(json); jFriends.Add(json2); jFriends.Add(json3); jFriends.Add(json4); Console.WriteLine(jFriends.ToString());
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| [ { "id": "Luna", "name": "Silver", "age": 19 }, { "id": "Luna", "name": "Silver", "age": 19, "blog": "devluna.blogspot.kr" }, { "id": "SJ", "name": "Philip", "age": 25 }, { "id": "J01", "age": 23 } ]
|
4.1.3 JArray를 Element로 추가
1 2 3 4 5
| var jarray2 = new JArray(); jarray2.Add(jarray); jarray2.Add(jFriends); Console.WriteLine(jarray2.ToString());
|
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
| [ [ 1, "Luna", "2016-05-21T09:51:03.2882071+09:00" ], [ { "id": "Luna", "name": "Silver", "age": 19 }, { "id": "Luna", "name": "Silver", "age": 19, "blog": "devluna.blogspot.kr" }, { "id": "SJ", "name": "Philip", "age": 25 }, { "id": "J01", "age": 23 } ] ]
|
4.2 Element값 사용하기
4.2.1 Element값 읽기
[ ]
연산자로 읽을 수 있습니다.
1 2 3
| var jf0 = jFriends[0]; Console.WriteLine(jf0.ToString());
|
1 2 3 4 5
| { "id": "Luna", "name": "Silver", "age": 19 }
|
for
, foreach
로 iteration이 가능합니다.
1 2 3 4 5
| foreach(JObject fElement in jFriends) { var fName = fElement["name"] ?? "<NULL>"; Console.WriteLine(fName); }
|
1 2 3 4
| Silver Silver Philip <NULL>
|
4.2.2 Element값 삭제하기
1 2 3 4
| jFriends.Remove(jFriends[1]); jFriends.Remove(jFriends[2]); Console.WriteLine(jFriends.ToString());
|
1 2 3 4 5 6 7 8 9 10 11 12
| [ { "id": "Luna", "name": "Silver", "age": 19 }, { "id": "SJ", "name": "Philip", "age": 25 } ]
|
5. JObject에 JArray 추가하기
1 2 3
| json2.Add("Friends", jFriends); Console.WriteLine(json2.ToString());
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "id": "Luna", "name": "Silver", "age": 19, "blog": "devluna.blogspot.kr", "Friends": [ { "id": "Luna", "name": "Silver", "age": 19 }, { "id": "SJ", "name": "Philip", "age": 25 } ] }
|