C# SimpleJSON字典反序列化實戰(zhàn)教程
C# 解析JSON道路千萬條,其中最流行的還是由Newtonsoft出品的Json.NET,只需要將Json的結構做成C#的class,即可實現(xiàn)完美的序列化和反序列化。更重要的是它還支持LINQ。
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
string json = JsonConvert.SerializeObject(product);
// {
// "Name": "Apple",
// "Expiry": "2008-12-28T00:00:00",
// "Sizes": [
// "Small"
// ]
// }string json = @"{
'Name': 'Bad Boys',
'ReleaseDate': '1995-4-7T00:00:00',
'Genres': [
'Action',
'Comedy'
]
}";
Movie m = JsonConvert.DeserializeObject<Movie>(json);
string name = m.Name;
// Bad BoysJArray array = new JArray();
array.Add("Manual text");
array.Add(new DateTime(2000, 5, 23));
JObject o = new JObject();
o["MyArray"] = array;
string json = o.ToString();
// {
// "MyArray": [
// "Manual text",
// "2000-05-23T00:00:00"
// ]
// }但也不妨有同志因為SDK大小等種種原因?qū)で笠粋€輕量替代方案,SimpleJSON就是其中一個選擇,只用一個C#腳本就干完了JSON解析的事兒。
SimpleJSON的用法很簡單,(當然老規(guī)矩,還得是基于我的一個開源項目來講,歡迎點個star)先讀出來json字符串,然后用JSONNode.Parse(你的字符串)即可獲得反序列化JSON文件后的根節(jié)點。
public static void Initialize()
{
Configuration = JSONNode.Parse(File.ReadAllText("appsettings.json"));
}如上面代碼所示,我的json字符串在一個叫appsettings.json文件里,文件內(nèi)容如下:
{
"Discord": {
"token": "your-bot-token",
"channel": "your-channel-id",
"logChannel": "your-bot-log-channel-id (leave it empty if you dont want log. )"
},
"Unity": [
{
"2022.3.14f1": "E:\\Program Files\\Unity 2022.3.14f1\\Editor\\Unity.exe"
}
],
"Projects": [
{
"name": "example",
"path": "D:\\Unity_Projects\\example",
"unityVersion": "2022.3.14f1",
"playerBuildOutput": "D:\\Unity_Projects\\example\\Build",
"addressableBuildOutput": "D:\\Unity_Projects\\example\\ServerData"
}
],
"Ssh": {
"address": "",
"user": "",
"password": "",
"privateKeyPath": "",
"keepAliveInterval": "-1",
"expectedFingerprints": []
}
}其中Unity節(jié)點下是一個列表,列表相當于是一個Dictionary<string, JSONNode>,我們得稍微處理一下。
EditorInstallations = new Dictionary<string, string>();
foreach (JSONNode node in ConfigurationUtility.Configuration["Unity"].AsArray)
{
foreach (var kvp in node)
{
EditorInstallations.Add(kvp.Key, kvp.Value.Value);
_logger.LogInformation($"[{GetType()}] Found a Unity Editor installation! {kvp.Key}, {kvp.Value}");
}
}對于這種列表的情況,SimpleJSON給我們預留了JSONArray,里面包含了JSONNode列表。

我們再進到JSONNode去看,你會發(fā)現(xiàn)JSONNode其實是有KeyValuePair的。

Key是一個string,也就是字段名,Value還是一個JSONNode,至于怎么處理Value里的東西就看當時怎么規(guī)定的類型了。如果是string,那就直接拿JSONNode的Value就可以了。
?重要提醒:有同志用ToString習慣了直接就上去用了,這是不太對的。雖說SimpleJSON的確實現(xiàn)了ToString方法,但其實干的事情和函數(shù)名不是完全一致,它實際上是返回了JSON字符串,和我們理解的string的不同點在于它返回的字符串的開頭和結尾會帶著雙引號!請務必注意這一點,除非你有特殊需求,否則請直接從JSONNode.Value拿。關于這塊的更詳細解釋,請見此issue。
到此這篇關于C# SimpleJSON字典反序列化的文章就介紹到這了,更多相關C# SimpleJSON反序列化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C#實現(xiàn)功能強大的中國農(nóng)歷日歷操作類
這篇文章主要介紹了C#實現(xiàn)功能強大的中國農(nóng)歷日歷操作類,實例分析了C#操作時間及字符串的技巧,非常具有實用價值,需要的朋友可以參考下2015-03-03
C#使用Spire.PDF for .NET實現(xiàn)PDF轉(zhuǎn)SVG
在現(xiàn)代Web開發(fā)和圖形處理中,對于文檔和圖像格式的靈活轉(zhuǎn)換需求日益增長,本文將深入探討如何利用強大的 Spire.PDF for .NET 庫,準確地將PDF文件轉(zhuǎn)換為SVG文件,感興趣的小伙伴可以了解下2025-09-09

