go语言搬砖之go jmespath实现查询json数据

下面是“go语言搬砖之go jmespath实现查询json数据”的完整攻略:

什么是go jmespath

go jemspah是一个Go语言实现的JMESPath语法查询工具。JMESPath是一种用于描述如何从JSON文档中提取所需数据的查询语言。

安装go jmespath

在Go语言的环境下使用go get即可安装go jmespath:

go get github.com/jmespath/go-jmespath

查询语法

JMESPath查询语句的基础语法如下:

<基础表达式>.<属性名>[?<查询条件>]|[<索引>]|

例如,下面的JMESPath查询语句可以查询JSON数据中user属性的id属性:

user.id

示例1:查询json数组数据

以下是一个示例JSON数组数据:

[
    {
        "name": "张三",
        "age": 23,
        "gender": "男"
    },
    {
        "name": "李四",
        "age": 26,
        "gender": "男"
    }
]

我们可以使用go jmespath查询库来查询JSON数组数据中的单个或多个元素,例如,查询上面JSON数组数据中年龄大于25的人的名字,方法如下:

package main

import (
    "fmt"
    "github.com/jmespath/go-jmespath"
)

func main() {
    jmespathString := "[]|[?age > `25`].name"
    inputJSON := `[{"name":"张三","age":23,"gender":"男"},{"name":"李四","age":26,"gender":"男"},{"name":"王五","age":30,"gender":"女"}]`
    parsedJSON, _ := jmespath.Search(jmespathString, inputJSON)
    fmt.Println(parsedJSON)
}

运行上述代码即可得到查询结果:

["李四","王五"]

示例2:查询嵌套json数据

以下是一个示例嵌套JSON数据:

{
    "users": [
        {
            "name": "张三",
            "age": 23,
            "gender": "男",
            "address": {
                "province": "北京市",
                "city": "北京市"
            }
        },
        {
            "name": "李四",
            "age": 26,
            "gender": "男",
            "address": {
                "province": "广东省",
                "city": "深圳市"
            }
        }
    ]
}

我们可以使用go jmespath查询库来查询JSON数组数据中的单个或多个元素,例如,查询上面JSON数组数据中地址在北京市的人的名字,方法如下:

package main

import (
    "fmt"
    "github.com/jmespath/go-jmespath"
)

func main() {
    jmespathString := ".users[?address.province == `北京市`].name"
    inputJSON := `{"users":[{"name":"张三","age":23,"gender":"男","address":{"province":"北京市","city":"北京市"}},{"name":"李四","age":26,"gender":"男","address":{"province":"广东省","city":"深圳市"}}]}`
    parsedJSON, _ := jmespath.Search(jmespathString, inputJSON)
    fmt.Println(parsedJSON)
}

运行上述代码即可得到查询结果:

["张三"]

以上是关于“go语言搬砖之go jmespath实现查询json数据”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:go语言搬砖之go jmespath实现查询json数据 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言中怎么在main函数开始前执行函数

    要在main()函数执行之前执行自定义函数,可以使用C语言中的__attribute__关键字以及GCC编译器提供的constructor函数。该方法允许我们在程序运行时完成某些预处理工作,例如初始化全局变量或检查系统配置等。以下是详细步骤: 编写自定义函数,定义函数名、返回值类型和参数列表等。使用__attribute__((constructor))宏将…

    C 2023年5月23日
    00
  • C语言利用cJSON解析JSON格式全过程

    当我们需要获取某个Web API的数据时,一般情况下会返回JSON格式的数据。如何使用C语言来解析这些JSON数据呢?这时候,就可以使用cJSON开源库。 cJSON是一款轻量级、快速的C语言JSON解析器。它使用简单,只需要包含一个头文件”cJSON.h”,并将相关代码文件加入到项目中即可。下面将详细讲解cJSON解析JSON格式的全过程。 第一步:安装c…

    C 2023年5月22日
    00
  • 如何在抖音卖课程?在抖音上卖课程方式汇总

    如何在抖音卖课程? 要在抖音上卖课程,以下步骤值得一试: 步骤一:申请店铺账号 想要在抖音上卖课程,首先需要注册店铺账号并认证。 1.进入抖店(抖音商家后台),根据提示注册店铺账号。 2.填写相关信息,提交认证材料。 步骤二:准备课程内容 在抖音上卖课程需要有足够的课程内容,要为用户提供有价值的学习体验。 1.根据目标用户和市场需求,确定课程内容、形式等。 …

    C 2023年5月22日
    00
  • C++实现简单职工信息管理系统

    C++实现简单职工信息管理系统攻略 1. 需求分析 简单职工信息管理系统需要实现以下功能: 添加职工信息 显示职工信息 删除职工信息 修改职工信息 查找职工信息 排序 清空职工信息 退出系统 2. 设计思路 2.1 类的设计 我们可以设计一个职工类,用于存储职工的信息,包括编号、姓名、部门编号、职位信息等。同时,我们还可以设计一个管理类,用于管理所有的职工信…

    C 2023年5月23日
    00
  • python中报错”json.decoder.JSONDecodeError: Expecting value:”的解决

    当我们使用Python解析JSON数据时,如果JSON格式错误,就会出现”json.decoder.JSONDecodeError: Expecting value:”错误提示。下面是这个错误的详细解决方式: 解决方法1:检查JSON格式正确性 首先,我们需要检查JSON数据的格式是否正确。可以使用在线工具,在线工具可以帮助我们验证JSON格式是否正确。如果…

    C 2023年5月23日
    00
  • C语言中的算法

    C语言中的算法使用攻略 什么是算法? 算法是指完成特定任务的一系列步骤。在计算机编程中,算法是指一系列解决问题的方法和技巧。 算法在C语言中的应用 C语言中的很多常用函数或者库都依赖算法。在具体实现时,需要编写算法的代码来解决相关的问题。C语言中使用算法的主要步骤如下: 1. 定义输入和输出 对于算法来说,需要先定义输入和输出,在C语言中可以使用函数的参数和…

    C 2023年5月9日
    00
  • 如何利用最简单的C语言实现AI五子棋

    以下是详细的攻略。 一、概述 AI五子棋的实现可以使用简单的C语言编写。整个程序可以分为三个部分:用户交互、棋盘表示、决策引擎。用户交互包括输入和输出,棋盘表示包括棋盘的状态,决策引擎则用于决策AI下一步的位置。下面将分别对这三个部分进行详细的说明。 二、用户交互 用户交互可以通过控制台实现。程序需要输出当前棋局状态并获取用户下子的位置。输出可以使用简单的A…

    C 2023年5月23日
    00
  • C语言 两个数组相加

    当需要将两个数组进行元素级别相加时,可以使用C语言进行实现。具体过程如下: 定义两个需要相加的数组,并初始化。 int arr1[] = {1, 2, 3, 4, 5}; int arr2[] = {6, 7, 8, 9, 10}; 定义一个新的数组用于存储相加后的结果。 int sum[5]; 使用for循环遍历两个数组,并将对应元素相加,存储到新的数组中…

    C 2023年5月9日
    00
合作推广
合作推广
分享本页
返回顶部