述:在應(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 是 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í)需要一些努力。但不要害怕,這正是本指南所要幫助的!
現(xiàn)在我們已經(jīng)了解了 JSON 的重要性,讓我們來探討一下如何在 C# 中使用它。讓我們揭開這個(gè)謎團(tuán)!
當(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ù)。誰知道它可以如此簡單?
曾經(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ì)象的力量。
但是,如果你的 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# 類似乎毫不費(fèi)力,但它也可能是一個(gè)非常詳細(xì)的過程,具體取決于 JSON 的復(fù)雜性。因此,讓我們討論一下無論情況如何,您都可以輕松度過難關(guān)。
將 JSON 轉(zhuǎn)換為 C# 類圍繞匹配屬性展開。確保類屬性與 JSON 對(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),我們征服了!
將 JSON 轉(zhuǎn)換為 C# 類 將 JSON 轉(zhuǎn)換為 C# 類時(shí)可能會(huì)出現(xiàn)問題,尤其是對(duì)于復(fù)雜的 JSON 結(jié)構(gòu)。
以下是一些建議:
好吧,讓我們稍微換個(gè)檔位。現(xiàn)在,讓我們專注于從 JSON 對(duì)象創(chuàng)建 C# 類。這個(gè)過程很簡單,無痛,別忘了,有趣!
您可以按照上述步驟從任何 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í)的潛在陷阱。
注意:
一點(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 文件用作 ASP.NET Core 應(yīng)用程序中的配置文件。這是存儲(chǔ)連接字符串、日志記錄設(shè)置等設(shè)置的位置。讓我們看看如何在類文件中訪問和修改它。
我們借助內(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),例如:
永遠(yuǎn)記住,能力越大,責(zé)任越大!
就像我們可以將 JSON 字符串轉(zhuǎn)換為 C# 類對(duì)象一樣,我們可以做相反的事情!下面介紹如何將 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)了劇本!
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語法有三種表示方法
簡單值
對(duì)象
數(shù)組
簡單值
"hello json"
對(duì)象(常見表示方法)
{
"name":"nancy",
"age":25
}
數(shù)組
[
{"name":"aaa"},
{"name":"bbb"}
]
JSON常用的兩個(gè)方法1.stringify() 2.parse()
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)讀微訊”
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。