การใช้งาน Newtonsoft.Json

  1. การติดตั้ง Newtonsoft.Json
  2. การ Serialize และ Deserialize – Object
  3. การ Serialize และ Deserialize – Collection
  4. การ Serialize และ Deserialize – Dictionary
  5. การ Serialize และ Deserialize – DataSet
  6. การ Serialize และ Deserialize – DataTable
  7. การ Deserialize – Anonymous Type

1.การติดตั้ง Newtonsoft.Json

 PM> Install-Package Newtonsoft.Json
Installing 'Newtonsoft.Json 12.0.1'.
Successfully installed 'Newtonsoft.Json 12.0.1'.
Adding 'Newtonsoft.Json 12.0.1' to ConsoleApp1.
Successfully added 'Newtonsoft.Json 12.0.1' to ConsoleApp1.

2.การ Serialize และ Deserialize – Object

การ Serialize an Object

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class Account
    {
        public string Email { get; set; }
        public bool Active { get; set; }
        public DateTime CreatedDate { get; set; }
        public IList<string> Roles { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Account account = new Account
            {
                Email = "james@example.com",
                Active = true,
                CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
                Roles = new List<string>
                {
                    "User",
                    "Admin"
                }
            };

            string json1 = JsonConvert.SerializeObject(account);

            Console.WriteLine(json1);
            // {"Email":"james@example.com","Active":true,"CreatedDate":"2013-01-20T00:00:00Z","Roles":["User","Admin"]}


            string json2 = JsonConvert.SerializeObject(account, Formatting.Indented);

            Console.WriteLine(json2);
            // {
            //   "Email": "james@example.com",
            //   "Active": true,
            //   "CreatedDate": "2013-01-20T00:00:00Z",
            //   "Roles": [
            //     "User",
            //     "Admin"
            //   ]
            // }
        }
    }
}

การ Deserialize an Object

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class Account
    {
        public string Email { get; set; }
        public bool Active { get; set; }
        public DateTime CreatedDate { get; set; }
        public IList<string> Roles { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string json = @"{
              'Email': 'jack@example.com',
              'Active': true,
              'CreatedDate': '2013-01-20T00:00:00Z',
              'Roles': [
                'User',
                'Admin'
              ]
            }";

            Account account = JsonConvert.DeserializeObject<Account>(json);

            Console.WriteLine(account.Email);
            // jack@example.com
        }
    }
}

3.การ Serialize และ Deserialize – Collection

การ Serialize a Collection

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> videogames = new List<string>
            {
                "Starcraft",
                "Halo",
                "Legend of Zelda"
            };

            string json = JsonConvert.SerializeObject(videogames);

            Console.WriteLine(json);
            // ["Starcraft","Halo","Legend of Zelda"]
        }
    }
}

การ Deserialize a Collection

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = @"['Starcraft','Halo','Legend of Zelda']";

            List<string> videogames = JsonConvert.DeserializeObject<List<string>>(json);

            Console.WriteLine(string.Join(", ", videogames.ToArray()));
            // Starcraft, Halo, Legend of Zelda
        }
    }
}

4.การ Serialize และ Deserialize – Dictionary

การ Serialize a Dictionary

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, int> points = new Dictionary<string, int>
            {
                { "James", 9001 },
                { "Jo", 3474 },
                { "Jess", 11926 }
            };

            string json = JsonConvert.SerializeObject(points, Formatting.Indented);

            Console.WriteLine(json);
            // {
            //   "James": 9001,
            //   "Jo": 3474,
            //   "Jess": 11926
            // }
        }
    }
}

การ Deserialize a Dictionary

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = @"{
              'href': '/account/login.aspx',
              'target': '_blank'
            }";

            Dictionary<string, string> htmlAttributes = 
                JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

            Console.WriteLine(htmlAttributes["href"]);
            // /account/login.aspx

            Console.WriteLine(htmlAttributes["target"]);
            // _blank
        }
    }
}

5.การ Serialize และ Deserialize – DataSet

การ Serialize a Dataset

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("dataSet");
            ds.Namespace = "NetFrameWork";
            
            DataTable dt = new DataTable();
            
            DataColumn idColumn = new DataColumn("id", typeof(int));
            idColumn.AutoIncrement = true;

            DataColumn itemColumn = new DataColumn("item");
            
            dt.Columns.Add(idColumn);
            dt.Columns.Add(itemColumn);
            
            ds.Tables.Add(dt);

            for (int i = 0; i < 2; i++)
            {
                DataRow newRow = dt.NewRow();
                newRow["item"] = "item " + i;
                dt.Rows.Add(newRow);
            }

            ds.AcceptChanges();

            string json = JsonConvert.SerializeObject(ds, Formatting.Indented);

            Console.WriteLine(json);
            // {
            //   "Table1": [
            //     {
            //       "id": 0,
            //       "item": "item 0"
            //     },
            //     {
            //       "id": 1,
            //       "item": "item 1"
            //     }
            //   ]
            // }
        }
    }
}

การ Serialize ให้ได้ผลลัพธ์เหมือนกับการใช้ Dataset

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
    public class Result
    {
        public int id { get; set; }
        public string item { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string json = JsonConvert.SerializeObject(new
            {
                Table1 = new List<Result>()
                {
                    new Result { id = 0, item = "item 0" },
                    new Result { id = 1, item = "item 1" }
                }
            }, Formatting.Indented);

            Console.WriteLine(json);
            //{
            //  "Table1": [
            //    {
            //      "id": 0,
            //      "item": "item 0"
            //    },
            //    {
            //      "id": 1,
            //      "item": "item 1"
            //    }
            //  ]
            //}
        }
    }
}

การ Deserialize a Dataset

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = @"{
              'Table1': [
                {
                  'id': 0,
                  'item': 'item 0'
                },
                {
                  'id': 1,
                  'item': 'item 1'
                }
              ]
            }";

            DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(json);

            DataTable dataTable = dataSet.Tables["Table1"];

            Console.WriteLine(dataTable.Rows.Count);
            // 2

            foreach (DataRow row in dataTable.Rows)
            {
                Console.WriteLine(row["id"] + " - " + row["item"]);
            }
            // 0 - item 0
            // 1 - item 1
        }
    }
}

6.การ Serialize และ Deserialize – DataTable

using Newtonsoft.Json;
using System;
using System.Data;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("col1");
            dt.Columns.Add("col2");
            dt.Columns.Add("col3");
            DataRow dr1 = dt.NewRow();
            dr1["col1"] = "A111";
            dr1["col2"] = "A222";
            dr1["col3"] = "A333";
            dt.Rows.Add(dr1);
            DataRow dr2 = dt.NewRow();
            dr2["col1"] = "B111";
            dr2["col2"] = "B222";
            dr2["col3"] = "B333";
            dt.Rows.Add(dr2);

            string json = JsonConvert.SerializeObject(dt);
            Console.WriteLine(json);
//[
//    {
//        "col1": "A111",
//        "col2": "A222",
//        "col3": "A333"
//    },
//    {
//        "col1": "B111",
//        "col2": "B222",
//        "col3": "B333"
//    }
//]

            DataTable dtResult = JsonConvert.DeserializeObject<DataTable>(json);
            Console.WriteLine(dtResult.Rows.Count);
        }
    }
}

7.การ Deserialize – Anonymous Type

การ Deserialize an Anonymous Type

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var definition = new { Name = "" };

            string json1 = @"{'Name':'James'}";
            var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition);

            Console.WriteLine(customer1.Name);
            // James

            string json2 = @"{'Name':'Mike'}";
            var customer2 = JsonConvert.DeserializeAnonymousType(json2, definition);

            Console.WriteLine(customer2.Name);
            // Mike           
        }
    }
}