C#如何通過匿名類直接使用訪問JSON數(shù)據(jù)詳解
實驗?zāi)康?/strong>
在C#和Rest/Restful以及其它的Web服務(wù)交互過程中,大量使用到JSON傳遞數(shù)據(jù),如何快捷的轉(zhuǎn)化C#對象到JSON和轉(zhuǎn)化JSON到C#對象,成為開發(fā)過程中頻繁使用的內(nèi)容。傳統(tǒng)的方式下,我們需要定義和JSON對象同步的C#類并實例化成對象以遍操作,這里提供了一個直接使用匿名類的方式,相較于傳統(tǒng)方式可以少定義一些類,操作更加簡便。
開發(fā)環(huán)境
實現(xiàn)步驟
1.創(chuàng)建工程:控制臺程序,命名為JsonTest
2.添加組件:增加JSON組件
第一步:右鍵點擊項目,選擇“管理NuGet程序包”菜單
第二步:在"NuGet: JsonTest"選項卡中選擇瀏覽,輸入json后回車,選擇Newtonsoft.Json,選擇版本后點擊安裝按鈕。
第三步:完成安裝
3.編寫代碼:簡單結(jié)構(gòu)
JSON格式如下:
{
"name":"張三",
"sex":"男",
"birthday": "2018-02-09"
}
CSharp代碼
using Newtonsoft.Json;
using System;
namespace JsonTest
{
class Program
{
static void Main(string[] args)
{
string jsonstr = JsonConvert.SerializeObject(new
{
name = "張三",
sex = "男",
birthday = "2018-02-09"
});
Console.WriteLine("對象序列化后的字符串為:");
Console.WriteLine(jsonstr);
Console.WriteLine("\n\n字符串反序列化為對象后的值為:");
var jsonobj = JsonConvert.DeserializeObject<dynamic>(jsonstr);
Console.WriteLine("姓名:" + jsonobj.name);
Console.WriteLine("性別:" + jsonobj.sex);
Console.WriteLine("生日:" + jsonobj.birthday);
Console.Read();
}
}
}
執(zhí)行結(jié)果
4.編寫代碼:數(shù)組的操作
CSharp代碼
using Newtonsoft.Json;
using System;
namespace JsonTest
{
class Program
{
static void Main(string[] args)
{
string jsonstr = JsonConvert.SerializeObject(new[]{
new {
name = "張三",
sex = "男",
birthday = "2018-02-09"
},
new{
name = "李四",
sex = "男",
birthday = "2018-02-09"
}
});
Console.WriteLine("對象序列化后的字符串為:");
Console.WriteLine(jsonstr);
Console.WriteLine("\n\n字符串反序列化為對象后的值為:");
var jsonarr = JsonConvert.DeserializeObject<dynamic[]>(jsonstr);
foreach (var jsonobj in jsonarr)
{
Console.WriteLine("姓名:" + jsonobj.name);
Console.WriteLine("性別:" + jsonobj.sex);
Console.WriteLine("生日:" + jsonobj.birthday);
Console.WriteLine("---------------");
}
Console.Read();
}
}
}
執(zhí)行結(jié)果
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對我們的支持。
上一篇:C#中的多線程超時處理實踐方案
欄 目:C#教程
下一篇:C#實現(xiàn)JSON解析器MojoUnityJson功能(簡單且高效)
本文標題:C#如何通過匿名類直接使用訪問JSON數(shù)據(jù)詳解
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5280.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的方法
- 01-10Extjs4如何處理后臺json數(shù)據(jù)中日期和時間
- 01-10C#通過Semaphore類控制線程隊列的方法
- 01-10asp.net中XML如何做增刪改查操作
- 01-10C#.NET中如何批量插入大量數(shù)據(jù)到數(shù)據(jù)庫中
- 01-10C#警惕匿名方法造成的變量共享實例分析
- 01-10C#通過正則表達式實現(xiàn)提取網(wǎng)頁中的圖片
- 01-10解析C#中的常量及如何在C#編程中定義常量
- 01-10深入講解C#編程中嵌套類型和匿名類型的定義與使用


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機閱讀
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結(jié)
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文


