關於JObject的用法,以及實現動態生成實體物件、動態建立一些Josn組合
通過JObject和JArray建立JSON物件
我們先用非常簡單的方法來動態建立一些JSON,可通過JToken派生的JSON.NET物件來進行,最常見的JToken派生的類是JObject和JArray。
正是因為JToken實現了IDynamicMetaProvider動態語言介面,所以可以使用dynamic關鍵字直觀地建立動態物件,並把這個動態物件序列化為JSON字串。 我們通過JArray和JObject來建立一個示例:
[TestMethod]
public void JObjectOutputTest()
{
// strong type instance
var jsonObject = new JObject();
// you can explicitly add values here
jsonObject.Add("Entered", DateTime.Now);
// dynamic expando instance you can add properties to
dynamic album = jsonObject;
album.AlbumName = "Dirty Deeds Done Dirt Cheap";
album.Artist = "AC/DC";
album.YearReleased = 1976;
album.Songs = new JArray() as dynamic;
dynamic song = new JObject();
song.SongName = "Dirty Deeds Done Dirt Cheap";
song.SongLength = "4:11";
album.Songs.Add(song);
song = new JObject();
song.SongName = "Love at First Feel";
song.SongLength = "3:10";
album.Songs.Add(song);
Console.WriteLine(album.ToString());
}
執行上面的示例程式碼,就能形成以下結構的JSON內容:
{
"Entered": "2012-08-18T13:26:37.7137482-10:00",
"AlbumName": "Dirty Deeds Done Dirt Cheap",
"Artist": "AC/DC",
"YearReleased": 1976,
"Songs": [
{
"SongName": "Dirty Deeds Done Dirt Cheap",
"SongLength": "4:11"
},
{
"SongName": "Love at First Feel",
"SongLength": "3:10"
}
]
}
C#給JSON物件新增一個鍵值對
/// <summary>新增一個屬性
///
/// </summary>
/// <param name="obj">待新增屬性的物件</param>
/// <param name="key">鍵名</param>
/// <param name="value">值</param>
/// <returns>新增屬性後的物件</returns>
public static object Add(object obj, string key, object value)
{
JObject jObj = JObject.Parse(JsonConvert.SerializeObject(obj));
jObj.Add(new JProperty(key, value));
return JsonConvert.DeserializeObject(jObj.ToString());
}
C#關於JArray和JObject封裝JSON物件的使用
相關文章
- C#動態建立介面的實現例項物件C#物件
- winform動態生成窗體並實現傳值返回ORM
- 關於IDEA使用xml實現動態sql的問題IdeaXMLSQL
- 關於dotnet動態生成controller的問題Controller
- 動態棧的實現
- PHP使用動態規劃實現最優紅包組合PHP動態規劃
- JavaScript代理模式,怎麼實現物件的動態代理?JavaScript模式物件
- 【乾貨】JDK動態代理的實現原理以及如何手寫一個JDK動態代理JDK
- 基於.net standard 的動態編譯實現編譯
- 原生JS實現拋物線動畫以及動態模糊效果JS動畫
- SVG剪下蒙版屬性clip-path實戰,動態蒙版+動態圖形,動動組合SVG
- Feign實現動態URL
- Go | Go 結合 Consul 實現動態反向代理Go
- 基於Redis實現Spring Cloud Gateway的動態管理RedisSpringCloudGateway
- 基於jquery-treeview的動態選單實現jQueryView
- Laravel 動態屬性的實現Laravel
- 關於動態表單遇到的一些問題
- 深挖JDK動態代理(二):JDK動態生成後的位元組碼分析JDK
- vue + element 實現快速關閉動態tabs功能Vue
- 手動實現ArrayList動態陣列陣列
- 【Gin-API系列】實現動態路由分組(七)API路由
- .NET Core 利用委託實現動態流程組裝
- 通過類名動態生成物件物件
- GitLab 實現動態 Environment URLGitlab
- Avalonia 實現動態托盤
- Puppeteer 實戰-爬取動態生成的網頁網頁
- web動態驗證碼的實現Web
- 【react】實現動態表單中巢狀動態表單React巢狀
- 關於vue動態元件Vue元件
- 00024.06 反射:反射的應用2:動態建立物件反射物件
- BIRT 中根據引數實現動態日期分組
- 關於位元組跳動的神話與現實(上)
- 關於位元組跳動的神話與現實(下)
- 基於Retrofit2實現的LycheeHttp-使用動態代理實現上傳HTTP
- Roslyn 編譯器Api妙用:動態生成類並實現介面ROS編譯API
- 實現動態自動匹配輸入的內容
- 全面解析RayFire的動態物件與靜態物件物件
- 關於動態字串的繫結字串