首页 > 其他分享 >system.text.json 搜索获取节点值

system.text.json 搜索获取节点值

时间:2024-04-01 20:56:56浏览次数:25  
标签:arr return string text system element json res out

搜索Json节点值

public static class JsonStringExtensions
{
    public static bool TryGetNestValueByJsonKey(this string jsonString, stringkey, out string res)
    {
        res = string.Empty;
        try
        {
            var arr = key.Split('.');
            using (JsonDocument document = JsonDocument.Parse(jsonString))
            {
                var element = document.RootElement;
                int i = 0;
                for (; i < arr.Length; i++)
                {
                    switch (element.ValueKind)
                    {
                        case JsonValueKind.String:
                            var subKey = string.Join(
                                ".", SubArray(arr, i, arr.Length -     i));
                            
                            return TryGetNestValueByJsonKey(
                                element.GetString(), subKey,    out res);
                            
                        case JsonValueKind.Object 
                            when !element.TryGetProperty(arr[i],  out element):
                            return false;
                    }
                }
                if (i != arr.Length) return false;
                res = element.GetString();
                return true;
            }
        }
        catch
        {
            return false;
        }
    }

    public static T[] SubArray<T>(T[] array, int startIndex, int length)
    {
        T[] result = new T[length];
        Array.Copy(array, startIndex, result, 0, length);
        return result;
    }
}

使用方式:

// keyName:body.msg.out_order_no

if (!string.IsNullOrWhiteSpace(parameters) && parameters.TryGetNestValueByJsonKey(keyName, out string value))
{
      //查到了
}

标签:arr,return,string,text,system,element,json,res,out
From: https://www.cnblogs.com/pw55b/p/18109326

相关文章

  • System.gc 之后到底发生了什么 ?
    本文基于OpenJDK17进行讨论在JDKNIO针对堆外内存的分配场景中,我们经常会看到System.gc的身影,比如当我们通过FileChannel#map对文件进行内存映射的时候,如果JVM进程虚拟内存空间中的虚拟内存不足,JVM在native层就会抛出OutOfMemoryError。当JDK捕获到OutOfMem......
  • 运维排查 | Systemd 之服务停止后状态为 failed
    哈喽大家好,我是咸鱼。我们知道CentOS7之后,Systemd代替了原来的SystemV来管理服务,相比SystemV,Systemd能够很好地解决各个服务间的依赖关系,还能让所有的服务同时启动,而不是串行启动。通常情况下,yum安装的软件会由系统的包管理器(如RPM)安装,并且会配置相应的systemd服务......
  • WPF如何使用 System.Windows.Forms.FolderBrowserDialog
    WPF如何使用System.Windows.Forms.FolderBrowserDialog在WPF中,如果你想使用System.Windows.Forms.FolderBrowserDialog来选择文件夹,你需要添加对WinForms的引用,因为FolderBrowserDialog是WindowsForms的一部分,不是WPF的一部分。下面是如何在WPF应用程序中使用FolderBro......
  • cJSON(API的详细使用教程)
    我们今天来学习一般嵌入式的必备库,JSON库1,json和cJSON那什么是JSON什么是cJSON,他们之间有什么样的关联呢,让我们一起来探究一下吧。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它易于人阅读和编写,也易于机器解析和生成。JSON采用键值对的方式来表示数据,通常用......
  • groovy 字符串、json 动态拼接内容
    1.字符串拼接defids=[21321,3445,3456];defsize=ids.size();vars.put("skuNum",size);logs.add('sku数量:'+size);StringBuffersb=newStringBuffer();defrandom=newjava.util.Random();for(inti=0;i<size;i++){defskuId=......
  • IPC-System V-SHM-shmget
    shmget()参数shmflagshmat()shmflagshmdt......
  • Jackson 2.x 系列【10】特征配置篇之 JsonFactory.Feature、JsonGenerator.Feature、J
    有道无术,术尚可求,有术无道,止于术。本系列Jackson版本2.17.0源码地址:https://gitee.com/pearl-organization/study-jaskson-demo文章目录1.前言2.特征说明2.1JsonFactory.Feature2.2JsonGenerator.Feature2.3JsonParser.Feature3.配置特征1.前言本篇......
  • delphi基于数据模型(data-model)JSON序列
    delphi基于数据模型(data-model)JSON序列需要DELPHI10.2以上版本才能支持。1)实现JSON序列/还原的泛型模板unitserialize;///<author>cxg2024-1-11</author>interfaceusessystem.Classes,System.SysUtils,System.JSON.Serializers;typeTSerial<T:record>......
  • Json文件格式及Cpp解析
    JSON(JavaScriptObjectNotation)用于存储和传输数据,通常用于服务器-->Web端的数据传输JSON示例:{"employees":[{"firstName":"John","lastName":"Doe"},{"firstName":"Anna","lastN......
  • Operating System
    操作系统(OperatingSystem)说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS系统。如果是从事信息通信行业,还经常会和ubuntu、CentOS、Fedora这样的Linux系统打交道。其实,操作系......