C#如何通過匿名類直接使用訪問JSON數(shù)據(jù)詳解
實(shí)驗(yàn)?zāi)康?/strong>
在C#和Rest/Restful以及其它的Web服務(wù)交互過程中,大量使用到JSON傳遞數(shù)據(jù),如何快捷的轉(zhuǎn)化C#對(duì)象到JSON和轉(zhuǎn)化JSON到C#對(duì)象,成為開發(fā)過程中頻繁使用的內(nèi)容。傳統(tǒng)的方式下,我們需要定義和JSON對(duì)象同步的C#類并實(shí)例化成對(duì)象以遍操作,這里提供了一個(gè)直接使用匿名類的方式,相較于傳統(tǒng)方式可以少定義一些類,操作更加簡(jiǎn)便。
開發(fā)環(huán)境

實(shí)現(xiàn)步驟
1.創(chuàng)建工程:控制臺(tái)程序,命名為JsonTest

2.添加組件:增加JSON組件
第一步:右鍵點(diǎn)擊項(xiàng)目,選擇“管理NuGet程序包”菜單

第二步:在"NuGet: JsonTest"選項(xiàng)卡中選擇瀏覽,輸入json后回車,選擇Newtonsoft.Json,選擇版本后點(diǎn)擊安裝按鈕。

第三步:完成安裝

3.編寫代碼:簡(jiǎn)單結(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("對(duì)象序列化后的字符串為:");
Console.WriteLine(jsonstr);
Console.WriteLine("\n\n字符串反序列化為對(duì)象后的值為:");
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("對(duì)象序列化后的字符串為:");
Console.WriteLine(jsonstr);
Console.WriteLine("\n\n字符串反序列化為對(duì)象后的值為:");
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é)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
C#使用HttpClient對(duì)大文件進(jìn)行斷點(diǎn)上傳和下載
這篇文章主要介紹了C#如何使用HttpClient對(duì)大文件進(jìn)行斷點(diǎn)上傳和下載,文章通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-06-06
C#實(shí)現(xiàn)TIF圖像轉(zhuǎn)PDF文件的方法
這篇文章主要介紹了C#實(shí)現(xiàn)TIF圖像轉(zhuǎn)PDF文件的方法,涉及C#使用TIFtoPDF工具實(shí)現(xiàn)pdf文件轉(zhuǎn)換的技巧,需要的朋友可以參考下2015-07-07
使用C# Winform應(yīng)用程序獲取網(wǎng)頁(yè)源文件的解決方法
本篇文章是對(duì)使用C# Winform應(yīng)用程序獲取網(wǎng)頁(yè)源文件的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C#科學(xué)繪圖之使用scottPlot繪制多個(gè)圖像
ScottPlot是基于.Net的一款開源免費(fèi)的交互式可視化庫(kù),支持Winform和WPF等UI框架,本文主要為大家詳細(xì)介紹了如何使用scottPlot實(shí)現(xiàn)繪制多個(gè)圖像,需要的可以參考下2023-12-12
C#創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)
本文主要對(duì)存儲(chǔ)結(jié)構(gòu)字典(Dictionary)的一些常用方法進(jìn)行簡(jiǎn)單的說明,并闡述了如何創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)。希望對(duì)大家有所幫助2016-12-12

