是不是只能這樣先判斷有沒有這個鍵,有的話再判斷值對不對?
JObject Json = JObject.Parse(文本);有沒有辦法一次就判斷出來?譬如類似這樣的寫法:
if (Json.ContainsKey("特定鍵") && Json["特定鍵"].ToString() == "特定值")
// 包含"特定鍵"且該鍵的值為"特定值"時滿足條件
else
// 不包含"特定鍵"或包含該鍵,但該鍵的值不為"特定值"時不滿足條件
if (Json["特定鍵"] == JValue("特定值")) // 編譯不通過
uj5u.com熱心網友回復:
“Null 條件運算子”if (Json["特定鍵"]?.ToObject<string>() == "特定值")
{
}
uj5u.com熱心網友回復:
好的。再請問,怎么判斷 Json 的第一個鍵的鍵名是什么?uj5u.com熱心網友回復:
直接正則判斷不是更快uj5u.com熱心網友回復:
比較容易理解的: var firstKey = Json.Properties().FirstOrDefault()?.Name;代碼較少的: var firstKey = (Json.First as JProperty)?.Name;
uj5u.com熱心網友回復:
其實我想問問,這個最快速的意思是什么?代碼簡短,還是速度快?
uj5u.com熱心網友回復:
快?沒有快的把這個變成xpath,或者類sql的查詢都是沒問題的,比如很多nosql資料庫都支持json的直接查詢,甚至說mssql也能支持json的查詢
問題在與快,沒啥快的。都是內部遍歷的,頂多是可能重新映射,內部索引。
uj5u.com熱心網友回復:
可能覺得
代碼簡短=速度快
uj5u.com熱心網友回復:
so,隨便去nuget用"json xpath" 和"json sql" 查找就可以找到一堆,至于快就未必了,json這種萬能鴨型的,你除了重建索引映射,沒啥更快的辦法。 頂多可能是把你自己寫的玩意,變成emit或類似linq的構造運算式,在內部自動代碼判定回傳uj5u.com熱心網友回復:
轉成字串判斷可以嗎?比如 string.Contains("\"xxx\":");
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/126029.html
標籤:C#
上一篇:fromdata上傳圖片到api
下一篇:spire.doc 插入檔案InsertTextFromFile方法報錯已添加了具有相同鍵的項這個問題怎么解決?
