亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# 獲取動態(tài)key的json對象的值案例

 更新時間:2021年01月25日 14:59:10   作者:冬冬冬冬冬冬冬冬冬冬  
這篇文章主要介紹了C# 獲取動態(tài)key的json對象的值案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

問題描述

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

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

這個json對象如果使用C#類來反序列化,那么實體類的結(jié)構(gòu)如下,實體類的類名需要與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是動態(tài)的無法使用C#反序列化,但是直接取到value就能序列化了,如下。

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

以上json對象就可以使用我們常用的格式轉(zhuǎn)換了。

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; }
}

實現(xiàn)代碼

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

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
/// <summary>
/// 本類用于處理動態(tài)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系統(tǒng)API接口獲取到JSON格式數(shù)據(jù),JSON字符串是不規(guī)范的或者說是很難以獲取doc_id字段(位于樹的葉子節(jié)點,但是卻不知道有多少個枝干節(jié)點),這時想到了采用正則表達式獲取指定KEY的值,于是產(chǎn)生了這篇文章。

適用場景

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

JSON字符串對應(yīng)的對象比較難以構(gòu)造,只需要獲取其中某幾個KEY的值

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

代碼

/// <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;
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • C#開發(fā)windows服務(wù)實現(xiàn)自動從FTP服務(wù)器下載文件

    C#開發(fā)windows服務(wù)實現(xiàn)自動從FTP服務(wù)器下載文件

    這篇文章主要為大家詳細介紹了C#開發(fā)windows服務(wù)實現(xiàn)自動從FTP服務(wù)器下載文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C#實現(xiàn)更改MDI窗體背景顏色的方法

    C#實現(xiàn)更改MDI窗體背景顏色的方法

    這篇文章主要介紹了C#實現(xiàn)更改MDI窗體背景顏色的方法,涉及C#窗體背景色的設(shè)置技巧,非常簡單實用,需要的朋友可以參考下
    2015-08-08
  • 一文掌握C# JSON(2023最新整理)

    一文掌握C# JSON(2023最新整理)

    JSON的全稱是JavaScript Object Notation,意思是JavaScript對象表示法,它是一種基于文本,獨立于語言的輕量級數(shù)據(jù)交換格式,這篇文章主要介紹了C#中的JSON(2023最新整理),需要的朋友可以參考下
    2023-05-05
  • 解析.NET中幾種Timer的使用

    解析.NET中幾種Timer的使用

    本文主要對.NET中4個Timer類,及其用法進行梳理,具有很好參考價值,需要的朋友一起來看下吧
    2016-12-12
  • C#并行編程之Task同步機制

    C#并行編程之Task同步機制

    這篇文章介紹了C#并行編程之Task同步機制,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 總結(jié)C#刪除字符串?dāng)?shù)組中空字符串的幾種方法

    總結(jié)C#刪除字符串?dāng)?shù)組中空字符串的幾種方法

    C#中要如何才能刪除一個字符串?dāng)?shù)組中的空字符串呢?下面的文章會介紹多種方式來實現(xiàn)清除數(shù)組中的空字符串,以及在.net中將字符串?dāng)?shù)組中字符串為空的元素去除。
    2016-08-08
  • C# 中DateTime 的使用技巧匯總

    C# 中DateTime 的使用技巧匯總

    本文主要介紹了DateTime的使用技巧,包括獲取本周、上周、下周、本月、上個月、下個月、本季度、上季度、下季度、本年度、上年度、下年度等多個方法,分享給大家,希望對大家有所幫助。
    2016-04-04
  • C#實現(xiàn)的UDP收發(fā)請求工具類實例

    C#實現(xiàn)的UDP收發(fā)請求工具類實例

    這篇文章主要介紹了C#實現(xiàn)的UDP收發(fā)請求工具類,結(jié)合具體實例形式分析了C#針對UDP請求的監(jiān)聽、接收、發(fā)送等相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#事件中的兩個參數(shù)詳解(object sender,EventArgs e)

    C#事件中的兩個參數(shù)詳解(object sender,EventArgs e)

    這篇文章主要介紹了C#事件中的兩個參數(shù)詳解(object sender,EventArgs e),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • C#定時每天00點00分00秒自動重啟軟件

    C#定時每天00點00分00秒自動重啟軟件

    這篇文章主要為大家詳細介紹了C#定時每天00點00分00秒自動重啟軟件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評論