javascript
.NET Core 3.0 新 JSON API - JsonDocument
JsonDocument類?
JsonDocument是基于Utf8JsonReader?構(gòu)建的。JsonDocument?可分析?JSON?數(shù)據(jù)并生成只讀文檔對(duì)象模型?(DOM),可對(duì)模型進(jìn)行查詢,以支持隨機(jī)訪問和枚舉。使用?JsonDocument?分析常規(guī)?JSON?有效負(fù)載并訪問其所有成員比使用?Json.NET?快?2-3?倍,且為合理大小(即?< 1 MB)的數(shù)據(jù)所分配的量非常少。?
JsonDocument可以處理Span,也可以處理Stream。?
?
例子:?
這里我通過File.OpenRead把json文件轉(zhuǎn)化為stream。然后使用JsonDocument.Parse方法把stream解析成JSON文檔對(duì)象模型。?
注意,這里我使用了C# 8的using var語法,這個(gè)以后再說。?
?
下面我們開始從這個(gè)JSON文檔對(duì)象模型的根節(jié)點(diǎn)開始遍歷,也就是RootElement:?
?
然后通過root這個(gè)JsonElement類型的對(duì)象的GetProperty方法來獲得相應(yīng)的屬性,而且這個(gè)方法可以連串使用:?
最后一行使用GetString方法來獲得該屬性的字符串值。?
?
然后我們可以寫一個(gè)遞歸調(diào)用的方法來遍歷整個(gè)模型的每個(gè)屬性:?
這個(gè)方法接受JsonElement類型的對(duì)象,然后對(duì)該元素的屬性進(jìn)行循環(huán)。?
如果當(dāng)前屬性是另一個(gè)對(duì)象,那么就繼續(xù)遞歸調(diào)用這個(gè)方法;?
否則就輸出原始的文本。?
?
?
最后調(diào)用該方法:?
?
輸出結(jié)果為:?
與json文件的內(nèi)容匹配。?
?
?
最后解釋一下什么是遞歸:?
?
?
?
?
更詳細(xì)的內(nèi)容請(qǐng)查看原文連接。
總結(jié)
以上是生活随笔為你收集整理的.NET Core 3.0 新 JSON API - JsonDocument的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core在 .NET C
- 下一篇: gradle idea java ssm