最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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字符串對應的對象比較難以構(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# 建造者模式(Builder Pattern)詳細講解

    C# 建造者模式(Builder Pattern)詳細講解

    建造者模式是一種創(chuàng)建型設(shè)計模式,通過將復雜對象的構(gòu)建過程與其表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示,它適用于構(gòu)建過程復雜且涉及多個步驟的場景,本文介紹C# 建造者模式(Builder Pattern)詳細講解,感興趣的朋友一起看看吧
    2025-03-03
  • async and await 的入門基礎(chǔ)操作

    async and await 的入門基礎(chǔ)操作

    本篇文章對async and await 的入門基礎(chǔ)操作進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#中的反射(System.Reflection)

    C#中的反射(System.Reflection)

    這篇文章介紹了C#中的反射(System.Reflection),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 一起來學習C#的觀察者模式

    一起來學習C#的觀察者模式

    這篇文章主要為大家詳細介紹了C#的觀察者模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C#中使用強制類型實現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換

    C#中使用強制類型實現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換

    這篇文章主要介紹了C#中使用強制類型實現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換,本文還給出了另一種方法,需要的朋友可以參考下
    2014-08-08
  • C#預定義數(shù)據(jù)類型之值類型和引用類型介紹

    C#預定義數(shù)據(jù)類型之值類型和引用類型介紹

    這篇文章主要介紹了C#預定義數(shù)據(jù)類型之值類型和引用類型介紹,本文著重講解了引用類型中的object(對象)類型和string(字符串)類型,需要的朋友可以參考下
    2015-03-03
  • C#窗體傳值實例匯總

    C#窗體傳值實例匯總

    這篇文章主要介紹了C#窗體傳值,實例形式匯總了靜態(tài)變量傳值、委托傳值、對話框之間的傳值等常見應用技巧,需要的朋友可以參考下
    2014-12-12
  • Unity3D實現(xiàn)甜品消消樂游戲

    Unity3D實現(xiàn)甜品消消樂游戲

    這篇文章主要介紹了通過C# Unity3D繪制一個甜品消消樂游戲,文中的示例代碼講解詳細,對我們學習或工作有一定的幫助,感興趣的小伙伴可以學習一下
    2021-12-12
  • C#配置文件操作類分享

    C#配置文件操作類分享

    這篇文章主要分享了C#配置文件操作類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 詳解c# 多態(tài)

    詳解c# 多態(tài)

    這篇文章主要介紹了c# 多態(tài)的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07

最新評論

五家渠市| 泽库县| 余干县| 泉州市| 五华县| 安宁市| 平凉市| 马龙县| 阳信县| 屏东市| 沧州市| 镇巴县| 县级市| 石棉县| 营口市| 新兴县| 林西县| 玉林市| 诏安县| 佛山市| 班玛县| 塘沽区| 临颍县| 兴义市| 玉溪市| 离岛区| 浙江省| 会东县| 聂拉木县| 商城县| 遵化市| 施秉县| 泸西县| 石屏县| 赤壁市| 湘潭县| 竹山县| 天全县| 禹城市| 潼南县| 鹤壁市|