91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用C#怎么獲取動態key的json對象值

發布時間:2021-02-09 16:35:06 來源:億速云 閱讀:499 作者:Leah 欄目:開發技術

利用C#怎么獲取動態key的json對象值?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

問題描述

如果直接獲取某個json數組中的元素將得到如下的json

{
 "44": {
  "height": 25,
  "appeared": -70000000,
  "length": 44,
  "order": "saurischia",
  "vanished": -70000000,
  "weight": 135000
 }
}

這個json對象如果使用C#類來反序列化,那么實體類的結構如下,實體類的類名需要與json對象key相同的才可以使用json反序列化,這樣對程序造成了極大的不便。

public class 44
{
 public int height { get; set; }
 public int appeared { get; set; }
 public int length { get; set; }
 public string order { get; set; }
 public int vanished { get; set; }
 public int weight { get; set; }
}
public class Root
{
 public 44 44 { get; set; }
}

解決方案

以上json對象由于key是動態的無法使用C#反序列化,但是直接取到value就能序列化了,如下。

{
 "height":25,
 "appeared":-70000000,
 "length":44,
 "order":"saurischia",
 "vanished":-70000000,
 "weight":135000
}

以上json對象就可以使用我們常用的格式轉換了。

public class Root
{
 public int height { get; set; }
 public int appeared { get; set; }
 public int length { get; set; }
 public string order { get; set; }
 public int vanished { get; set; }
 public int weight { get; set; }
}

實現代碼

從動態key的json對象里面拿到value那部分,可以反序列化的字符串,請使用如下的函數,注意引入類庫。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
/// <summary>
/// 本類用于處理動態Key的json對象
/// </summary>
/// <param name="jObject">需要處理的json對象</param>
/// <returns>json對象的第一個元素的values</returns>
public static string GetJsonValue(string strJson)
{
 string strResult;
 JObject jo = JObject.Parse(strJson);
 string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();
 if (values == null)
 {
  strResult = "";
 }
 else
 {
  strResult = values[0];
 }
 return strResult;
}

補充:C# 獲取JSON字符串中指定KEY的值

背景

從Markdown系統API接口獲取到JSON格式數據,JSON字符串是不規范的或者說是很難以獲取doc_id字段(位于樹的葉子節點,但是卻不知道有多少個枝干節點),這時想到了采用正則表達式獲取指定KEY的值,于是產生了這篇文章。

適用場景

不想要解析整個JSON字符串,只想獲取其中某個KEY的值

JSON字符串對應的對象比較難以構造,只需要獲取其中某幾個KEY的值

JSON字符串不規范,只需要獲取指定KEY的值(特別是有一些是數組對象,有一些是非數據對象)

代碼

/// <summary>
/// 獲取JSON字符串中指定KEY的值
/// </summary>
/// <param name="jsonString"></param>
/// <param name="key"></param>
/// <returns></returns>
public List<String> GetJsonValue(String jsonString, String key)
{
 String pattern = $"\"{key}\":\"(.*?)\\\"";
 MatchCollection matches = Regex.Matches(jsonString, pattern, RegexOptions.IgnoreCase);
 List<string> lst = new List<string>();
 foreach (Match m in matches)
 {
  lst.Add(m.Groups[1].Value);
 }
 return lst;
}

看完上述內容,你們掌握利用C#怎么獲取動態key的json對象值的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德州市| 邓州市| 吐鲁番市| 调兵山市| 泊头市| 二连浩特市| 黎城县| 尚义县| 清涧县| 仁寿县| 武夷山市| 改则县| 崇仁县| 北川| 抚顺县| 彝良县| 紫云| 牡丹江市| 西华县| 水城县| 永寿县| 格尔木市| 怀仁县| 万荣县| 大安市| 武汉市| 远安县| 富阳市| 正镶白旗| 阳泉市| 峨眉山市| 西和县| 江津市| 驻马店市| 徐汇区| 陵水| 湄潭县| 信丰县| 方正县| 年辖:市辖区| 宜川县|