文章目錄
[C#] 將 JSON 轉為 Dictionary
使用 JSON 做為避免在程式中寫死固定值的解決方案是種常見做法,不過一旦系統日漸龐大複雜起來時,可能就需要有良好的管理方式或是流程,像是將共用的 config 抽出成另個檔案,專屬於特定系統的 config 則僅存在特定系統中,不過這麼一來就需要留意 config 是否重複的問題,所以我嘗試將 JSON 轉為 Dictionary 預做檢查,避免 config 與預期不一致
基本環境說明
- macOS Catalina 10.15.2
- .NET Core SDK 3.1.101
- C# 8.0
程式碼與實際效果
程式碼
private static Dictionary<string, string> ToDictionary(string jsonSrting) { var jsonObject = JObject.Parse(jsonSrting); var jTokens = jsonObject.Descendants().Where(p => !p.Any()); var tmpKeys = jTokens.Aggregate(new Dictionary<string, string>(), (properties, jToken) => { properties.Add(jToken.Path, jToken.ToString()); return properties; }); return tmpKeys; }
使用方式
ToDictionary(File.ReadAllText(jsonFilePath));
實際效果
原始 json
{ "widget": { "debug": "on", "window": { "title": "Sample Konfabulator Widget", "name": "main_window", "width": 500, "height": 500 }, "image": { "src": "Images/Sun.png", "name": "sun1", "hOffset": 250, "vOffset": 250, "alignment": "center" }, "text": { "data": "Click Here", "size": 36, "style": "bold", "name": "text1", "hOffset": 250, "vOffset": 100, "alignment": "center", "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" } } }
Dictionary
心得
不知道做法正不正確,但先試試看避免找不到其他方法,先有個版本出來在討論時或是驗證時至少有個基準點,可能還是我功力不足:先求有再求好,沒辦法一步到位
參考資訊
文章作者 Yowko Tsai
上次更新 2020-02-01
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。