最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)解析JSON的示例詳解

 更新時間:2024年03月06日 15:40:16   作者:毛維  
這篇文章主要為大家詳細介紹了使用C#實現(xiàn)解析JSON的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以跟隨小編一起學習一下

1. JSON定義

全稱“JavaScript Object Notation(JavaScript對象表示法)”,JSON 是存儲和交換文本信息的語法。

舉例:

[
    {
        "id": 2,
        "name": "星河爆破",
        "number": 999
    },
    {
        "id": 3,
        "name": "九星連珠",
        "number": 9
    },
    {
        "id": 4,
        "name": "一語成讖",
        "number": 999
    }
]

2. JSON一般構(gòu)成及解析方法

JSON序列化與反序列化

JSON序列化:將對象轉(zhuǎn)換成JSON 字符串

JSON反序列化:將JSON 字符串轉(zhuǎn)換成對象

JSON結(jié)構(gòu)(2種)

(1)對象結(jié)構(gòu):{}

{key1:value1,key2:value2...}
key的數(shù)據(jù)類型:字符串value的數(shù)據(jù)類型:字符串、數(shù)值、null、json數(shù)組[]、json對象{}

(2)數(shù)組結(jié)構(gòu):[]

JSON數(shù)組結(jié)構(gòu):[value1,value2......]
value的數(shù)據(jù)類型:字符串、數(shù)值、null、json數(shù)組[]、json對象{}

C#代碼解析JSON

使用Visual Studio調(diào)試代碼,使用C#中的Newtonsoft庫來解析JSON,添加引用

using Newtonsoft.Json
using Newtonsoft.Json.Linq

解析規(guī)則(重要)

針對對象結(jié)構(gòu){},使用JObject解析

針對數(shù)組結(jié)構(gòu)[],使用JArray解析

3. 解析舉例子

1. JSON對象解析,只包含一層對象{}

JSON文本:

{
    "name":"張三",
    "name_en":"zhangssan"
}

解析代碼如下:

string jsonText = "{\"name\":\"張三\",\"name_en\":\"zhangssan\"}";
//解析對象JObject 
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
//獲取此對象key="name"和key="name_en"的值
string zone = jo["name"].ToString();
string zone_en = jo["name_en"].ToString();
Console.WriteLine(zone);
Console.WriteLine(zone_en);

2. 嵌套JSON對象解析,包含多層對象{}

JSON文本:

{
    "allname":{
        "name":"張三",
        "name_en":"zhangsan"
    }
}

解析代碼如下:

string jsonText = "{\"allname\":{\"name\":\"張三\",\"name_en\":\"zhangsan\"}}";
//解析對象JObject
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
//獲取此對象中key="allname"下key="name"的值
string zone = jo["allname"]["name"].ToString();
string zone_en = jo["allname"]["name_en"].ToString();
Console.WriteLine(zone);
Console.WriteLine(zone_en);

3. JSON數(shù)組解析1(數(shù)組循環(huán)遍歷)

JSON文本:

[
    {
        "a":"a1",
        "b":"b1"
    },
    {
        "a":"a2",
        "b":"b2"
    }
]

解析代碼如下:

string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]"; 
//解析數(shù)組JArray
JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);
//循環(huán)獲取數(shù)組中的內(nèi)容
for(int i = 0; i < jArray.Count; i++)
{
    //解析對象JObject
     JObject j = JObject.Parse(jArray[i].ToString());
    //獲取此對象key="a"的值
    string a = j["a"].ToString();
    Console.WriteLine(a);
}

4. JSON數(shù)組解析2(使用index獲取數(shù)據(jù),index從0開始計算)

JSON文本:

[
    {
        "a":"a1",
        "b":"b1"
    },
    {
        "a":"a2",
        "b":"b2"
    }
]

解析代碼如下:

string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]";   
//解析數(shù)組JArray           
JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);
//獲取數(shù)組jArray中第1個(從第0開始計算)key="a"的值
string str = jArray[1]["a"].ToString();
Console.WriteLine(str);

5. JSON 對象中的數(shù)組,一層對象{}中包含數(shù)組[]

JSON文本:

{
    "name":"網(wǎng)站",
    "num":3,
    "sites":[
        "Google",
        "Runoob",
        "Taobao"
    ]
}

解析代碼如下:

string jsonText = "{\"name\":\"網(wǎng)站\",  \"num\":3,  \"sites\":[\"Google\",\"Runoob\",\"Taobao\"]}";
//解析對象JObject
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string sites = jo["sites"].ToString();
//解析數(shù)組JArray
JArray jArray = (JArray)JsonConvert.DeserializeObject(sites);
//獲取數(shù)組sites jArray中第0個(從第0開始計算)的值
string sitesdetails = jArray[0].ToString();
Console.WriteLine(sitesdetails);

6. 嵌套 JSON 對象中的數(shù)組,多層對象{}包含數(shù)組[]

JSON文本:

{
    "name":"網(wǎng)站",
    "num":2,
    "sites": [
        { "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻譯" ] },
        { "name":"Taobao", "info":[ "淘寶", "網(wǎng)購" ] }
    ]
}

解析代碼如下:

string jsonText = "{\"name\":\"網(wǎng)站\",\"num\":2,\"sites\":[{\"name\":\"Google\",\"info\":[\"Android\",\"Google搜索\",\"Google翻譯\"]},{\"name\":\"Taobao\",\"info\":[\"淘寶\",\"網(wǎng)購\"]}]}";
//解析對象JObject
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string sites = jo["sites"].ToString();
//解析數(shù)組JArray
JArray jArray = (JArray)JsonConvert.DeserializeObject(sites);
//循環(huán)遍歷sites數(shù)組
for (int i = 0; i < jArray.Count; i++)
{
  //解析對象JObject
  JObject j = JObject.Parse(jArray[i].ToString());
  string info = j["info"].ToString();
  //解析數(shù)組JArray
  JArray jArray2 = (JArray)JsonConvert.DeserializeObject(info);
  //循環(huán)遍歷info數(shù)組
  for (int k = 0; k < jArray2.Count; k++)
  {
    Console.WriteLine(jArray2[k]);
  }
}

到此這篇關于C#實現(xiàn)解析JSON的示例詳解的文章就介紹到這了,更多相關C#解析JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#中abstract的用法詳解

    C#中abstract的用法詳解

    abstract可以用來修飾類,方法,屬性,索引器和時間,這里不包括字段. 使用abstrac修飾的類,該類只能作為其他類的基類,不能實例化,而且abstract修飾的成員在派生類中必須全部實現(xiàn),不允許部分實現(xiàn),否則編譯異常
    2016-12-12
  • Winform中GridView分組排序功能實現(xiàn)方法

    Winform中GridView分組排序功能實現(xiàn)方法

    這篇文章主要介紹了Winform中GridView分組排序功能實現(xiàn)方法,以實例形式詳細說明了分組排序的實現(xiàn)方法,并附帶完整的DBHelp類代碼,是非常實用的技巧,需要的朋友可以參考下
    2014-11-11
  • c# 設置TeeChart控件的提示文本

    c# 設置TeeChart控件的提示文本

    這篇文章主要介紹了c# 如何設置TeeChart控件的提示文本,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • C#使用RabbitMQ發(fā)送和接收消息工具類的實現(xiàn)

    C#使用RabbitMQ發(fā)送和接收消息工具類的實現(xiàn)

    RabbitMQ是一個消息的代理器,用于接收和發(fā)送消息,本文主要介紹了C#使用RabbitMQ發(fā)送和接收消息工具類的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • C#啟動進程的幾種常用方法

    C#啟動進程的幾種常用方法

    這篇文章主要介紹了C#啟動進程的幾種常用方法,實例分析了C#對系統(tǒng)進行的相關操作技巧,需要的朋友可以參考下
    2015-05-05
  • C#訪問SqlServer設置鏈接超時的方法

    C#訪問SqlServer設置鏈接超時的方法

    這篇文章主要介紹了C#訪問SqlServer設置鏈接超時的方法,涉及CommandTimeout屬性的相關設置技巧,非常簡單實用,需要的朋友可以參考下
    2015-06-06
  • C#?try?catch?使用實例詳解

    C#?try?catch?使用實例詳解

    在編程中,?try-catch-throw?是一種常見的錯誤處理模式,這三個關鍵字通常一起使用,以捕獲異常、處理異常和重新拋出異常,這篇文章主要介紹了C#?try?catch?使用,需要的朋友可以參考下
    2023-09-09
  • 深入Resource實現(xiàn)多語言支持的應用詳解

    深入Resource實現(xiàn)多語言支持的應用詳解

    本篇文章是對Resource實現(xiàn)多語言支持的應用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#拷貝文件簡單實現(xiàn)方法

    C#拷貝文件簡單實現(xiàn)方法

    這篇文章主要介紹了C#拷貝文件簡單實現(xiàn)方法,主要分析了FileInfo類中CopyTo方法針對文件復制的操作技巧,非常簡單實用,需要的朋友可以參考下
    2015-04-04
  • C#校驗時間格式的場景分析

    C#校驗時間格式的場景分析

    本文通過場景分析給大家講解C#里如何簡單的校驗時間格式,本次的場景屬于比較常見的收單API,對第三方的訂單進行簽名驗證,然后持久化到數(shù)據(jù)庫,需要的朋友跟隨小編一起看看吧
    2022-08-08

最新評論

石景山区| 丽江市| 武威市| 开平市| 弥渡县| 天峨县| 漯河市| 广灵县| 内江市| 盖州市| 富川| 灵川县| 岱山县| 彭水| 尚义县| 隆林| 顺平县| 徐汇区| 炎陵县| 昌图县| 神农架林区| 清水河县| 赣州市| 涟源市| 金昌市| 商洛市| 福清市| 葫芦岛市| 谷城县| 潍坊市| 莲花县| 铜山县| 扎鲁特旗| 八宿县| 河津市| 吉木乃县| 云南省| 西乌珠穆沁旗| 都兰县| 西华县| 绥中县|