小技巧-使用匿名型別快速捏出指定JSON格式

同事有個小需求,已知城市、區域及郵遞區號要產生如下規格的 JSON 餵到前端:

{
  "rows": {
    "row": [
      {
        "City": "台北市",
        "Area": "文山區",
        "ZIP": "116"
      }
    ]
  }
}

先前介紹過 JObject 結合 dynamic 的花式玩法可以快速達成目標:

        static void TestJObject(string city, string area, string zip)
        {
            dynamic root = new JObject();
            root.rows = new JObject();
            dynamic row = new JObject();
            row.City = city;
            row.Area = area;
            row.ZIP = zip;
            root.rows.row = new JArray(row);
            Console.WriteLine(JsonConvert.SerializeObject(root, Formatting.Indented));
        }

不過,我認為這個案例用 JObject 有點殺雞用牛刀,用 C# 匿名型別可以更輕鬆搞定,就順手寫了範例。從同事驚嘆的反應,我猜應該有些朋友沒想過匿名型別可以這様玩,看來這技巧有分享的價值,那就野人獻曝一下好了。

程式碼說破就不值一文錢,new { PropName = PropValue… } 直接宣告匿名物件,new [] { } 可宣告匿名物件陣列,將物件用 JsonConvert.SerializeObject() 轉成 JSON,大功告成!

        static void TestAnonyType(string city, string area, string zip)
        {
            var root = new
            {
                rows = new
                {
                    row = new[]
                    {
                        new
                        {
                            City = city,
                            Area = area,
                            ZIP = zip
                        }
                    }
                }
            };
            Console.WriteLine(JsonConvert.SerializeObject(root, Formatting.Indented));
        }
    }

實測兩種寫法結果一致:

        static void Main(string[] args)
        {
            TestJObject("台北市", "文山區", "116");
            TestAnonyType("台北市", "文山區", "116");
            Console.ReadLine();
        }

 

雜耍表演完畢,下台一鞠躬~

歡迎推文分享:
Published 25 August 2017 11:44 PM by Jeffrey
Filed under: ,
Views: 5,538



Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

Search

Go

<August 2017>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

This Blog


Syndication