JProperty、JObject、JArray

 

以下列出 JProperty、JObject、JArray 關係與用法

using System;
using Newtonsoft.Json.Linq;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //製作物件一
            JProperty jp_id1 = new JProperty("id", 123);
            JProperty jp_name1 = new JProperty("name", "Tom");

            JObject jo1 = new JObject();
            jo1.Add(jp_id1);
            jo1.Add(jp_name1);


            //製作物件二
            JProperty jp_id2 = new JProperty("id", 456);
            JProperty jp_name2 = new JProperty("name", "Bill");

            JObject jo2 = new JObject();
            jo2.Add(jp_id2);
            jo2.Add(jp_name2);


            //製作陣列
            JArray ja = new JArray();
            ja.Add(jo1);
            ja.Add(jo2);

            //將陣列以 json 文字型式呈現
            string sJa = ja.ToString();
            /*
            [
              {
                "id": 123,
                "name": "Tom"
              },
              {
                "id": 456,
                "name": "Bill"
              }
            ]
            */

            //將以文字型式呈現的 json 格式,轉成 JArray 陣列
            JArray jaParse = JArray.Parse(sJa);

            foreach (JObject item in jaParse)
            {
                //方式一:取得一 JObject 裡特定 key 的值
                Console.WriteLine(item["id"].ToString());

                //方式二:取得一 JObject 裡特定 key 的值
                Console.WriteLine(item.SelectToken("id").Value<string>());
            }

            Console.WriteLine("");
        }
    }
}

說明:

1、如果已知一字串為 object 的 json 格式,則可以使用 JObject.Parse() 方法,將其轉成 JObject 物件。

2、如果已知一字串為 array 的 json 格式,則可以使用 JArray.Parse() 方法,將其轉成 JArray 陣列。

3、如果要取得一 JObject 特定 key 的值可用如下格式

jobject["id"].ToString();

jobject.SelectToken("id").Value<string>();