欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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開始計(jì)算)

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開始計(jì)算)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開始計(jì)算)的值
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]);
  }
}

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

相關(guān)文章

  • c#中的yield?return用法詳解

    c#中的yield?return用法詳解

    這篇文章主要介紹了c#中的yield?return用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • C# 3DES加密詳解

    C# 3DES加密詳解

    3Des對每個數(shù)據(jù)塊進(jìn)行了三次的DES加密算法,是DES的一個更安全的變形。比起最初的DES,3DES更為安全。下面我們來看下在C#中的3DES加密方式的使用
    2015-06-06
  • C#調(diào)用webservice接口的最新方法教程

    C#調(diào)用webservice接口的最新方法教程

    webservice 可以用于分布式應(yīng)用程序之間的交互,和不同程序之間的交互。下面這篇文章主要給大家介紹了關(guān)于C#調(diào)用webservice接口的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面隨著小編來一起看看吧。
    2017-11-11
  • c#實(shí)現(xiàn)51單片機(jī)頻率計(jì)的代碼分享(數(shù)字頻率計(jì)設(shè)計(jì))

    c#實(shí)現(xiàn)51單片機(jī)頻率計(jì)的代碼分享(數(shù)字頻率計(jì)設(shè)計(jì))

    c#實(shí)現(xiàn)51單片機(jī)頻率計(jì)的代碼分享,大家參考使用吧
    2013-12-12
  • c# 讀取XML文件的示例

    c# 讀取XML文件的示例

    這篇文章主要介紹了c# 讀取XML文件的示例,幫助大家更好的理解和使用c# 編程語言,感興趣的朋友可以了解下。
    2020-11-11
  • C#身份證識別相關(guān)技術(shù)功能詳解

    C#身份證識別相關(guān)技術(shù)功能詳解

    這篇文章主要介紹了C#身份證識別相關(guān)技術(shù)詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Unity實(shí)現(xiàn)簡單換裝系統(tǒng)

    Unity實(shí)現(xiàn)簡單換裝系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)簡單換裝系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 淺談C#數(shù)組(二)

    淺談C#數(shù)組(二)

    上一篇文章我們介紹了C#數(shù)組的一部分,今天來個續(xù)文,關(guān)于C#數(shù)組想要了解更多的請看下面文章的具體內(nèi)容
    2021-09-09
  • C# WinForm捕獲全局變量異常 SamWang解決方法

    C# WinForm捕獲全局變量異常 SamWang解決方法

    本文將介紹C# WinForm捕獲全局變量異常 SamWang解決方法,需要的朋友可以參考
    2012-11-11
  • C#編程實(shí)現(xiàn)DataTable添加行的方法

    C#編程實(shí)現(xiàn)DataTable添加行的方法

    這篇文章主要介紹了C#編程實(shí)現(xiàn)DataTable添加行的方法,結(jié)合兩個實(shí)例形式分析了C#操作DataTable實(shí)現(xiàn)動態(tài)添加行的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論