整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          C# 中的 JSON 處理:面向開發(fā)人員的綜合指南

          C# 中的 JSON 處理:面向開發(fā)人員的綜合指南

          述:在應(yīng)用程序開發(fā)中,處理數(shù)據(jù)操作是一項(xiàng)核心任務(wù)。通常,此數(shù)據(jù)以 JSON(JavaScript 對(duì)象表示法)的形式出現(xiàn)。了解如何在所選編程語言(如 C#)中導(dǎo)航 JSON 至關(guān)重要。如果您曾經(jīng)思考過如何將 JSON 對(duì)象轉(zhuǎn)換為 C# 類,那么您很幸運(yùn)!本文深入探討了在 C# 框架中管理 JSON 的實(shí)用性和復(fù)雜性。我們將探討從將 JSON 字符串轉(zhuǎn)換為 C# 類對(duì)象到訪問和修改 C# 項(xiàng)目中的 appsettings.json 文件的所有內(nèi)容。介紹C# 中的 JSON JSON 和 C# 在編碼世界中有著特殊的聯(lián)系。他們不僅是一個(gè)強(qiáng)大的二人組,而且了解他們的內(nèi)部運(yùn)作會(huì)釋放出一個(gè)充滿可能性的世界,

          在應(yīng)用程序開發(fā)中,處理數(shù)據(jù)操作是一項(xiàng)核心任務(wù)。通常,此數(shù)據(jù)以 JSON(JavaScript 對(duì)象表示法)的形式出現(xiàn)。了解如何在所選編程語言(如 C#)中導(dǎo)航 JSON 至關(guān)重要。如果您曾經(jīng)思考過如何將 JSON 對(duì)象轉(zhuǎn)換為 C# 類,那么您很幸運(yùn)!

          本文深入探討了在 C# 框架中管理 JSON 的實(shí)用性和復(fù)雜性。我們將探討從將 JSON 字符串轉(zhuǎn)換為 C# 類對(duì)象到訪問和修改 C# 項(xiàng)目中的 appsettings.json 文件的所有內(nèi)容。

          介紹

          C# 中的 JSON JSON 和 C# 在編碼世界中有著特殊的聯(lián)系。他們不僅是一個(gè)強(qiáng)大的二人組,而且了解他們的內(nèi)部運(yùn)作會(huì)釋放出一個(gè)充滿可能性的世界,從而簡化您的編碼工作。讓我們開始吧!

          什么是 JSON 及其在 C# 中的意義?

          JSON 是 JavaScript 對(duì)象表示法的縮寫,是一種輕量級(jí)的數(shù)據(jù)交換格式,易于讀取和寫入。由于其獨(dú)立于語言的性質(zhì),它是現(xiàn)代應(yīng)用程序中用于在服務(wù)器和 Web 應(yīng)用程序之間存儲(chǔ)和通信數(shù)據(jù)的主要工具。

          其人類可讀的格式促進(jìn)了 C# 中服務(wù)器和客戶端之間的無縫通信,從而實(shí)現(xiàn)了直接的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)庫檢索,以及其他任務(wù)。

          下面是一個(gè)簡單的 JSON 示例,可幫助我們?nèi)腴T:

          {  
              "name":"John Doe",  
              "age":30,  
              "car":null  
          }

          它簡單易讀,不是嗎?

          了解 C# 中的 JSON 類 但是 C# 中的 JSON 類到底是什么,你為什么要感興趣呢?

          C# 中的 JSON 類的核心是表示相關(guān) JSON 結(jié)構(gòu)的類表示形式。它指示 JSON 對(duì)象如何直接映射到 C# 類,從而更方便地訪問和操作數(shù)據(jù)。然后,C# 可以利用這些類將 JSON 對(duì)象反序列化為可用格式。

          把它想象成一個(gè)神奇的轉(zhuǎn)變!從非類型化的 JSON 對(duì)象移動(dòng)到強(qiáng)類型的 C# 對(duì)象。很整潔,對(duì)吧?

          JSON 和 C# 之間的關(guān)系 還記得我們剛才討論的那個(gè)神奇的轉(zhuǎn)變嗎?

          嗯,這本質(zhì)上是 JSON 和 C# 之間的關(guān)系。一種是數(shù)據(jù)格式,另一種是編程語言。當(dāng) C# 遇到 JSON 時(shí),它們會(huì)和諧地協(xié)作,從而促進(jìn)輕松、動(dòng)態(tài)的數(shù)據(jù)操作。

          實(shí)現(xiàn)這種和諧狀態(tài)確實(shí)需要一些努力。但不要害怕,這正是本指南所要幫助的!

          在 C 語言中使用 JSON#

          現(xiàn)在我們已經(jīng)了解了 JSON 的重要性,讓我們來探討一下如何在 C# 中使用它。讓我們揭開這個(gè)謎團(tuán)!

          將 JSON 轉(zhuǎn)換為 C# 類

          當(dāng)您在應(yīng)用程序中遇到 JSON 數(shù)據(jù)時(shí),初始步驟通常涉及解釋并將其轉(zhuǎn)換為 C# 類。但是,我們?nèi)绾谓怄i這個(gè)信息寶庫呢?

          使用 Newtonsoft.Json 庫,我們可以毫不費(fèi)力地將 JSON 字符串反序列化為相應(yīng)的 C# 對(duì)象。

          看一下這個(gè)例子:

          using Newtonsoft.Json;  
            
          public class Person  
          {  
              public string Name { get; set; }  
              public int Age { get; set; }  
              public string Car { get; set; }  
          }  
          // Assume jsonString contains a JSON object similar to the one in our initial example  
          Person person=JsonConvert.DeserializeObject<Person>(jsonString);

          只需幾行代碼,我們就實(shí)例化了 Person 類,其中填充了 JSON 字符串中的數(shù)據(jù)。誰知道它可以如此簡單?

          從 JSON 創(chuàng)建 C# 類

          曾經(jīng)盯著一個(gè) JSON 對(duì)象,想知道,“我怎樣才能把它變成一個(gè) C# 類?

          你并不孤單!通過從 JSON 生成 C# 類,我們可以享受強(qiáng)大的類型和智能編碼支持(如 IntelliSense)的好處。另外,這非常容易做到!

          以下是實(shí)現(xiàn)此目的的快速方法:

          public class Vehicle  
          {  
              public string Type { get; set; }  
              public string Model { get; set; }  
              public string Color { get; set; }  
          }  
            
          Vehicle vehicle=JsonConvert.DeserializeObject<Vehicle>(jsonVehicleString);

          現(xiàn)在,我們有了一個(gè)新的 Vehicle 類及其實(shí)例車輛。您可以隨心所欲地操縱和利用此車輛對(duì)象的力量。

          在 C 中將 JSON 字符串轉(zhuǎn)換為類對(duì)象#

          但是,如果你的 JSON 字符串不是那么簡單呢?也許它嵌套得很深,或者看起來難以辨認(rèn)。如何將其轉(zhuǎn)換為 C# 類對(duì)象?

          關(guān)鍵在于了解 JSON 結(jié)構(gòu)并將其正確映射到 C# 類。如果 JSON 包含多個(gè)級(jí)別,只需在 C# 代碼中創(chuàng)建嵌套類即可。

          舉個(gè)例子,你說?在這里:

          public class Owner   
          {  
              public string Name { get; set; }  
              public Vehicle Car { get; set; }  
            
              public Owner()  
              {  
                  Car=new Vehicle();  
              }  
          }  
          
          
          Owner owner=JsonConvert.DeserializeObject<Owner>(jsonOwnerString);

          現(xiàn)在我們有一個(gè) Owner 對(duì)象,每個(gè)所有者都有一個(gè) Vehicle 對(duì)象作為他們的 Car。一個(gè)經(jīng)過深思熟慮的類結(jié)構(gòu)等于一個(gè)可靠的應(yīng)用程序!

          將 JSON 轉(zhuǎn)換為 C# 類

          雖然將 JSON 轉(zhuǎn)換為 C# 類似乎毫不費(fèi)力,但它也可能是一個(gè)非常詳細(xì)的過程,具體取決于 JSON 的復(fù)雜性。因此,讓我們討論一下無論情況如何,您都可以輕松度過難關(guān)。

          將 JSON 轉(zhuǎn)換為 C# 類的基本步驟

          將 JSON 轉(zhuǎn)換為 C# 類圍繞匹配屬性展開。確保類屬性與 JSON 對(duì)象中的名稱一致。

          以下是一般步驟:

          1. 確定 JSON 的結(jié)構(gòu)。
          2. 創(chuàng)建相應(yīng)的 C# 類。
          3. 將 JSON 字符串反序列化為新類。
          4. 利用新對(duì)象來滿足您的心愿!

          下面是一些代碼來說明這些步驟:

          public class School  
          {  
              public string Name { get; set; }  
              public int NumberOfStudents { get; set; }  
          }  
            
          School school=JsonConvert.DeserializeObject<School>(jsonSchoolString);

          瞧!您已經(jīng)將 JSON 對(duì)象轉(zhuǎn)換為 C# 類,或者我應(yīng)該說是 School 類。

          將 JSON 轉(zhuǎn)換為 C# 類的高級(jí)技術(shù) JSON 對(duì)象并不總是那么簡單。有時(shí),他們就像不守規(guī)矩的孩子,有嵌套的結(jié)構(gòu)和列表。但是,熟練的 C# 開發(fā)人員至少不會(huì)被淘汰。

          如果 JSON 數(shù)據(jù)包含數(shù)組、嵌套對(duì)象或其他復(fù)雜結(jié)構(gòu),請(qǐng)創(chuàng)建鏡像 JSON 結(jié)構(gòu)的 C# 類。例如:

          public class Student  
          {  
              public string Name { get; set; }  
              public int Age { get; set; }  
          }  
            
          public class School  
          {  
              public string Name { get; set; }  
              public int Population { get; set; }  
              public List<Student> Students { get; set; }  
          }  
            
          // school data deserilization and cast it to the School class  
          School school=JsonConvert.DeserializeObject<School>(jsonSchoolString);

          在這里,我們有一個(gè)更復(fù)雜的 JSON 結(jié)構(gòu),但憑借我們深思熟慮的類結(jié)構(gòu),我們征服了!

          處理復(fù)雜場景

          將 JSON 轉(zhuǎn)換為 C# 類 將 JSON 轉(zhuǎn)換為 C# 類時(shí)可能會(huì)出現(xiàn)問題,尤其是對(duì)于復(fù)雜的 JSON 結(jié)構(gòu)。

          以下是一些建議:

          1. 始終確保屬性名稱與 JSON 對(duì)象的名稱匹配。
          2. 請(qǐng)注意區(qū)分大小寫的問題。JSON 屬性通常是駝峰大小寫,而 C# 屬性是 Pascal 大小寫。您可以使用 JsonProperty 來克服這個(gè)問題。
          3. 利用 Newtonsoft.Json 庫。它讓生活變得輕松多了!
          4. 對(duì)于布爾數(shù)據(jù)類型,C# 使用 bool,而 JSON 使用 true 或 false。永遠(yuǎn)記住將它們等同起來。
          5. 不要害怕復(fù)雜的場景——它們是提高技能的機(jī)會(huì)!

          從 JSON 創(chuàng)建 C# 類

          好吧,讓我們稍微換個(gè)檔位。現(xiàn)在,讓我們專注于從 JSON 對(duì)象創(chuàng)建 C# 類。這個(gè)過程很簡單,無痛,別忘了,有趣!

          從 JSON 生成 C# 類

          您可以按照上述步驟從任何 JSON 對(duì)象手動(dòng)創(chuàng)建 C# 類。但是,您也可以使用 json2sharp 等在線工具從 JSON 對(duì)象生成 C# 類。只需粘貼您的 JSON 數(shù)據(jù),瞧,您立即獲得 C# 類。

          下面是用于從 JSON 創(chuàng)建類的緊湊代碼片段:

          public class Student  
          {  
              public string Name { get; set; }  
              public int Age { get; set; }  
              public List<string> Subjects { get; set; }  
              public string Grade { get; set; }  
          }  
            
          Student student=JsonConvert.DeserializeObject<Student>(jsonStudentString);

          您的 JSON 到 C# 類的創(chuàng)建變得更加容易,不是嗎?

          要避免的陷阱

          從 JSON 創(chuàng)建 C# 類時(shí),就像在任何其他編碼任務(wù)中一樣,我們必須注意從 JSON 創(chuàng)建 C# 類時(shí)的潛在陷阱。

          注意:

          1. JSON 和 C# 類之間的屬性名稱差異
          2. 與數(shù)據(jù)類型不一致
          3. 難以處理嵌套的 JSON 對(duì)象或數(shù)組

          一點(diǎn)點(diǎn)的細(xì)心總會(huì)讓你領(lǐng)先數(shù)英里!

          API 在從 JSON 創(chuàng)建 C# 類中的作用 如果我們不討論 API 在從 JSON 創(chuàng)建 C# 類時(shí)所扮演的角色,那將是我們的失職。API 通常以 JSON 格式返回?cái)?shù)據(jù)。通過創(chuàng)建鏡像 API 響應(yīng)的類,可以將 JSON 反序列化為 C# 類,并有效地處理數(shù)據(jù)。

          看,API 和 JSON 就像餅干和牛奶一樣相輔相成!

          在類中訪問和修改appsettings.json C#

          appsettings.json 文件用作 ASP.NET Core 應(yīng)用程序中的配置文件。這是存儲(chǔ)連接字符串、日志記錄設(shè)置等設(shè)置的位置。讓我們看看如何在類文件中訪問和修改它。

          在類中訪問appsettings.json C#:

          我們借助內(nèi)置的 IConfiguration 接口來處理這個(gè)問題。只需少量的依賴注入,IConfiguration 就可以訪問我們的appsettings.json及其所有存儲(chǔ)值。

          下面是如何從類中的appsettings.json中檢索值的示例:

          public class AppSettingsService  
          {  
              private IConfiguration _configuration;  
            
              public AppSettingsService(IConfiguration configuration)  
              {  
                  _configuration=configuration;  
              }  
            
              public string GetSetting(string key)  
              {  
                  return _configuration.GetValue<string>(key);  
              }  
          }

          此 AppSettingsService 類通過 IConfiguration 訪問appsettings.json。這是一塊鵝卵石!

          修改方式

          appsettings.json類中的 C# 但也許你想增加趣味并修改appsettings.json中的設(shè)置。

          明智地選擇你的戰(zhàn)斗!通常不建議以編程方式修改原始文件,因?yàn)樗鼤?huì)給應(yīng)用程序穩(wěn)定性帶來風(fēng)險(xiǎn)。

          相反,請(qǐng)考慮其他選項(xiàng),例如:

          1. 使用數(shù)據(jù)庫存儲(chǔ)動(dòng)態(tài)設(shè)置
          2. 為需要在運(yùn)行時(shí)更改的設(shè)置創(chuàng)建單獨(dú)的 json 文件

          永遠(yuǎn)記住,能力越大,責(zé)任越大!

          將 C# 類轉(zhuǎn)換為 JSON 架構(gòu)

          就像我們可以將 JSON 字符串轉(zhuǎn)換為 C# 類對(duì)象一樣,我們可以做相反的事情!下面介紹如何將 C# 類轉(zhuǎn)換為 JSON 架構(gòu)。

          如何將 C# 類轉(zhuǎn)換為 JSON 架構(gòu):

          完整的流程和見解 簡而言之,JSON 架構(gòu)定義了 JSON 數(shù)據(jù)格式的結(jié)構(gòu)。它可以使用 Newtonsoft.Json.Schema 庫從 C# 類派生。

          下面是一個(gè)示例:

          using Newtonsoft.Json.Schema;  
          using Newtonsoft.Json.Schema.Generation;  
            
          JSchemaGenerator generator=new JSchemaGenerator();  
          JSchema schema=generator.Generate(typeof(Student));  
            
          Console.WriteLine(schema.ToString());

          這將輸出基于 Student 類的 JSON 架構(gòu)。我們只是翻轉(zhuǎn)了劇本!

          結(jié)論

          C# 中的 JSON 類 對(duì)于負(fù)責(zé)在其應(yīng)用程序中處理 JSON 的開發(fā)人員,本指南提供了使用 JSON 和 C# 的全面知識(shí)。有了這些知識(shí),你就可以自信地在課堂上訪問appsettings.json,了解如何從 JSON 創(chuàng)建 C# 類,并知道如何在 C# 中將 JSON 字符串轉(zhuǎn)換為類對(duì)象。

          邊學(xué)習(xí)javascript一邊跟大家分享成果,喜歡就關(guān)注我吧,大家一起學(xué)習(xí)!


          javascript當(dāng)中JSON語法有三種表示方法

          1. 簡單值

          2. 對(duì)象

          3. 數(shù)組


          1. 簡單值

            "hello json"

          2. 對(duì)象(常見表示方法)

            {

            "name":"nancy",

            "age":25

            }

          3. 數(shù)組

            [

            {"name":"aaa"},

            {"name":"bbb"}

            ]


          • JSON常用的兩個(gè)方法1.stringify() 2.parse()

          1. stringify()用法

            用法一:把javascript對(duì)象轉(zhuǎn)化成JSON格式

          結(jié)果

          用法二:(重要)把javascript對(duì)象轉(zhuǎn)化成JSON格式,增加過濾,把不要的舍棄

          結(jié)果

          如果第二個(gè)參數(shù)是數(shù)組,那么結(jié)果將會(huì)只包含數(shù)組當(dāng)中的項(xiàng)

          用法三:(重要)把javascript對(duì)象轉(zhuǎn)化成JSON格式,轉(zhuǎn)化過程中改變?cè)械闹?/p>

          結(jié)果

          用法四:把javascript對(duì)象轉(zhuǎn)化成JSON格式,控制結(jié)果的縮進(jìn)和空白符

          結(jié)果

          該方法的第三個(gè)參數(shù)如果為數(shù)字,那么就是每個(gè)屬性前面縮進(jìn)的字符數(shù)。


          2.parse()方法

          用法一:把JSON轉(zhuǎn)化為javascript格式

          直接把JSON對(duì)象傳入parse()方法,這里就不敲示例了(類似stringify方法一);

          用法二:把JSON轉(zhuǎn)化javascript過程中,轉(zhuǎn)化過程中改變?cè)械闹担愃苨tringify方法三)

          結(jié)果

          javascript學(xué)習(xí)結(jié)果分享給大家,如有錯(cuò)誤歡迎指正,大家喜歡歡迎轉(zhuǎn)發(fā)收藏,歡迎大家一起在評(píng)論區(qū)交流

          SON

          JSON(JavaScriptObject Notation, JS 對(duì)象標(biāo)記) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于ECMAScript規(guī)范的一個(gè)子集,采用完全獨(dú)立于編程語言的文本格式來存儲(chǔ)和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。

          下面java生成JSON數(shù)據(jù)

          import net.sf.json.JSONArray;

          import net.sf.json.JSONObject;

          public class CopyOfJsonTest {

          /**

          * 生成多層json格式數(shù)據(jù)

          * 2017年4月28日 14:53:21

          * @param args

          */

          public static void main(String[] args) {

          JSONArray jsArray=new JSONArray();

          JSONObject j3=new JSONObject();

          j3.put(第三層1, 1);

          j3.put(第三層2, 2);

          j3.put(第三層3, 3);

          jsArray.add(j3);

          JSONArray jsArra2=new JSONArray();

          JSONObject j2=new JSONObject();

          j2.put(第二層1, 1);

          j2.put(第二層2, 2);

          j2.put(第二層3, jsArray);

          jsArra2.add(j2);

          JSONObject j1=new JSONObject();

          j1.put(第一層1, 1);

          j1.put(第一層2, j2);

          j1.put(第一層3, jsArra2);

          System.out.println(j1.toString());

          }

          }

          打印出的數(shù)據(jù)格式是

          感謝大家關(guān)注

          “點(diǎn)讀微訊”


          主站蜘蛛池模板: 成人中文字幕一区二区三区| 日本片免费观看一区二区 | 91在线看片一区国产| 无码人妻精品一区二区蜜桃| 男人的天堂亚洲一区二区三区| 久久久久人妻精品一区三寸蜜桃| 色老头在线一区二区三区| 久久精品亚洲一区二区三区浴池| 日本一区视频在线播放| 秋霞无码一区二区| 国产在线精品一区二区高清不卡 | 日韩动漫av在线播放一区| 在线视频一区二区| 亚洲日韩精品一区二区三区 | 无码少妇精品一区二区免费动态| 久久婷婷久久一区二区三区| 国产探花在线精品一区二区| 欧美日韩一区二区成人午夜电影| 亚洲V无码一区二区三区四区观看 亚洲爆乳精品无码一区二区三区 亚洲爆乳无码一区二区三区 | 亚洲一区二区三区国产精品| 日韩成人一区ftp在线播放| 农村乱人伦一区二区| 久久亚洲中文字幕精品一区| 国产精品538一区二区在线| 国产一区二区三区乱码在线观看| 99精品国产一区二区三区不卡| 国产伦精品一区二区免费| 国精品无码A区一区二区| 亚洲AV成人精品日韩一区18p| 精品中文字幕一区二区三区四区| 波多野结衣中文字幕一区二区三区| 精品免费国产一区二区三区| 国产在线观看91精品一区| 国产婷婷一区二区三区| 精品一区二区久久| 中文字幕乱码亚洲精品一区| 精品国产高清自在线一区二区三区 | 国产aⅴ一区二区| 最美女人体内射精一区二区| 亚洲福利秒拍一区二区| 欧美日韩一区二区成人午夜电影 |