iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >go语言搬砖之gojmespath实现查询json数据
  • 789
分享到

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

json数据JSONGOgo语言 2022-06-09 21:06:29 789人浏览 独家记忆
摘要

目录简介例子小结简介 Go-jmespath是用Go语言实现jmespath的一个库,jmespath是JSON的查询语言,所以在Go中利用go-jmespath可以做到查询j

目录

简介

例子

小结

简介

Go-jmespath是用Go语言实现jmespath的一个库,jmespath是JSON的查询语言,所以在Go中利用go-jmespath可以做到查询json的作用

go-jmespath官网: https://GitHub.com/jmespath/go-jmespath

jmespath官网:Https://jmespath.org/

jmespath学习: https://jmespath.org/tutorial.html

go-jmespath和linux系统jq命令功能非常相似,让Go处理json数据更加方便

例子

以下例子来源来go-jmespath官方文档和jmespath官网的学习文档总结

package main
import (
   "encoding/json"
   "fmt"
   "github.com/jmespath/go-jmespath"
)
func main() {
   //基本查询
   var jsonData = []byte(`{"foo": {"bar": {"baz":[0,1,2,3,4]}}}`)
   var data interface{}
   err := json.Unmarshal(jsonData, &data)
   if err != nil {
      fmt.Println(err)
   }
   re1, _ := jmespath.Search("foo.bar", data)
   fmt.Println("data查询结果: ", re1)
   re2, _ := jmespath.Search("foo.bar.baz[2]", data)
   fmt.Println("data查询结果: ", re2)
   //通配符查询
   var jsonData2 = []byte(`{"foo": [{"first": "a", "last": "b"},
                           {"first": "c", "last": "d"}]}`)
   var data2 interface{}
   _ = json.Unmarshal(jsonData2, &data2)
   re3, _ := jmespath.Search("foo[*].first", data2)
   fmt.Println("data2查询结果: ", re3)
   re4, _ := jmespath.Search("foo[:1].first", data2)
   fmt.Println("data2查询结果: ", re4)
   //运算符查询
   var jsonData3 = []byte(`{"foo": [{"age": 20}, {"age": 25},
                           {"age": 30}, {"age": 35},
                           {"age": 40}]}`)
   var data3 interface{}
   _ = json.Unmarshal(jsonData3, &data3)
   re5, _ := jmespath.Search("foo[?age > `30`]", data3)
   fmt.Println("data3查询结果: ", re5)
   //过滤查询
   var jsonData4 = []byte(`{
    "Machines": [
        {"name": "a", "state": "running"},
        {"name": "b", "state": "stopped"},
        {"name": "b", "state": "running"}]
    }`)
   var data4 interface{}
   _ = json.Unmarshal(jsonData4, &data4)
   re6, _ := jmespath.Search("machines[?state=='running'].name", data4)
   fmt.Println("data4查询结果: ", re6)
   //管道查询
   var jsonData5 = []byte(`{
    "people": [
        {"first": "James", "last": "d"},
        {"first": "Jacob", "last": "e"},
        {"first": "Jayden", "last": "f"},
        {"missing": "different"}
     ],
     "foo": {"bar": "baz"}
    }`)
   var data5 interface{}
   _ = json.Unmarshal(jsonData5, &data5)
   re7, _ := jmespath.Search("people[*].first | [0]", data5)
   fmt.Println("data5查询结果: ", re7)
   //多选查询并带自定义名称
   var jsonData6 = []byte(`{
    "people": [
    {
      "name": "a",
      "state": {"name": "up"}
    },
    {
      "name": "b",
      "state": {"name": "down"}
    },
    {
      "name": "c",
      "state": {"name": "up"}
    }
    ]
    }`)
   var data6 interface{}
   _ = json.Unmarshal(jsonData6, &data6)
   re8, _ := jmespath.Search("people[].{Name: name, State: state.name}", data6)
   fmt.Println("data6查询结果: ", re8)
   //函数
   var jsonData7 = []byte(`{
    "people": [
    {
      "name": "b",
      "age": 30,
      "state": {"name": "up"}
    },
    {
      "name": "a",
      "age": 50,
      "state": {"name": "down"}
    },
    {
      "name": "c",
      "age": 40,
      "state": {"name": "up"}
    }
    ]
    }`)
   var data7 interface{}
   _ = json.Unmarshal(jsonData7, &data7)
   re9, _ := jmespath.Search("length(people)", data7)
   fmt.Println("data7查询结果: ", re9)
   re10, _ := jmespath.Search("max_by(people, &age).name", data7)
   fmt.Println("data7查询结果: ", re10)
}
小结

上述例子演示了7种不同方式的查询,基本能覆盖日常json查询的需求了

go-jmespath包完全模拟了jmespath的语法在Go语言中进行json数据查询。只需要知道一个Search方法,第一个参数传入查询表达式,第二参数格式化数据,就可以轻松的在Go里面查询json数据了

以上就是go语言搬砖之go jmespath实现查询json数据的详细内容,更多关于go jmespath查询json数据的资料请关注编程网其它相关文章!


您可能感兴趣的文档:

--结束END--

本文标题: go语言搬砖之gojmespath实现查询json数据

本文链接: https://www.lsjlt.com/news/30977.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • go语言怎么查询mysql数据
    Golang是一种新兴的编程语言,与其他语言一样,它可以与多种数据库进行交互。在本文中,我们将讨论如何使用Golang中的MySQL驱动程序来查询MySQL数据库。为了使用MySQL驱动程序,我们需要通过以下命令将其安装到我们的Go项目中:...
    99+
    2023-05-14
    go语言 mysql
  • go语言如何查询mysql数据
    这篇“go语言如何查询mysql数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言如何查询mysql数据”文章吧。为...
    99+
    2023-07-05
  • Django 查询数据库返回JSON的实现
    目录返回多条数据返回单个对象和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 返回多条数据 示例 import json from django.http i...
    99+
    2024-04-02
  • Django如何实现查询数据库返回JSON
    这篇文章给大家分享的是有关Django如何实现查询数据库返回JSON的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。返回多条数据示例import jsonfrom django.http&nbs...
    99+
    2023-06-20
  • 如何在Go语言中实现高效的索引查询?
    Go语言是一门性能优异的编程语言,因此在实现高效的索引查询方面也有其独特的优势。本文将介绍如何在Go语言中实现高效的索引查询,包括如何使用map数据结构和使用第三方库等方法。 一、使用map数据结构 map是Go语言中实现键值对的一种数据结...
    99+
    2023-06-01
    并发 异步编程 索引
  • sql数据库查询语句怎么实现
    这篇文章将为大家详细讲解有关sql数据库查询语句怎么实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 sql数据库查询语句的完整语法是“Se...
    99+
    2024-04-02
  • mysql数据库如何实现查询语句
    这篇文章主要介绍mysql数据库如何实现查询语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 查询语句:1、“select * from 表名...
    99+
    2024-04-02
  • Go语言如何实现数据库的增删改查操作?
    Go语言是一种高效、简洁且易于学习的编程语言,因其在并发编程和网络编程方面的优势而备受开发者青睐。在实际开发中,数据库操作是不可或缺的一部分,本文将介绍如何使用Go语言实现数据库的增删...
    99+
    2024-04-02
  • 如何实现MySQL中查询数据的语句?
    如何实现MySQL中查询数据的语句?MySQL是目前最常用的关系型数据库之一,广泛应用于开发企业级应用和网站。在使用MySQL时,最常用到的功能之一就是查询数据。本文将带你了解如何通过MySQL的查询语句来获取所需的数据,并提供具体的代码示...
    99+
    2023-11-08
    MySQL语句查询
  • MySql中使用JSON_TABLE 函数来实现json类型的数据查询
    使用 MySQL 8.0.4 及以上版本提供的 JSON_TABLE 函数来实现查询 id 在 3、4、5… 中的数据,示例如下: SELECT *FROM table_nameCROSS J...
    99+
    2023-10-06
    mysql json 数据库
  • Go语言如何实现大数据处理?
    随着大数据时代的到来,数据量的爆炸式增长已经成为了一个不可避免的趋势。在这种情况下,如何高效地处理大数据成为了一个急需解决的问题。Go语言作为一种编译型、静态类型的语言,具有高效、高并发等特点,因此也成为了处理大数据的一种优秀的选择。 G...
    99+
    2023-11-13
    大数据 numy spring
  • go语言怎么实现Elasticsearches批量修改查询及发送MQ
    这篇“go语言怎么实现Elasticsearches批量修改查询及发送MQ”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go...
    99+
    2023-06-30
  • Go语言中如何解决并发数据库查询优化问题?
    Go语言中如何解决并发数据库查询优化问题?在日常的开发过程中,我们经常会遇到需要从数据库中查询大量数据的场景。而在并发环境下,数据库查询的性能往往会成为瓶颈。本文将介绍一些在Go语言中解决并发数据库查询优化问题的方法,并提供一些具体的代码示...
    99+
    2023-10-22
    优化 数据库 并发
  • 学习Go语言文档中的json.Marshal函数实现JSON序列化
    学习Go语言文档中的json.Marshal函数实现JSON序列化,需要具体代码示例在Go语言中,json.Marshal函数是实现JSON序列化的重要函数之一。它可以将Go语言中的数据结构转换为符合JSON格式的字符串。本文将详细介绍js...
    99+
    2023-11-03
    序列化 JSON 关键词是:Go语言
  • thinkphp如何实现两个数据库之间的查询
    本篇内容介绍了“thinkphp如何实现两个数据库之间的查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!配置数据库在 thinkphp 框...
    99+
    2023-07-05
  • Go语言数据结构之单链表的实例详解
    目录任意类型的数据域实例01快慢指针实例02反转链表实例03实例04交换节点实例05任意类型的数据域 之前的链表定义数据域都是整型int,如果需要不同类型的数据就要用到 interf...
    99+
    2024-04-02
  • MySQL对JSON类型字段数据进行提取和查询的实现
    目录前言1. 问题现象2. 解决方案3. JSON数据查询3.1 一般基础查询操作3.2 一般函数查询操作4. JSON数据新增更新删除前言 昨天上线后通过系统报警发现了一...
    99+
    2024-04-02
  • 如何用Go语言和Redis实现数据缓存
    如何用Go语言和Redis实现数据缓存随着互联网应用的迅速发展,数据缓存成为提高系统性能和响应速度的重要手段之一。而Go语言作为一门高效、可靠的编程语言,搭配Redis这个高性能的缓存数据库,可以实现快速的数据缓存。本文将介绍如何使用Go语...
    99+
    2023-10-27
    Go语言 redis 数据缓存
  • 如何实现MySQL中查询多行数据的语句?
    MySQL是一款广泛使用的开源关系型数据库管理系统,具有快速、可靠、易用等多种优点。在进行MySQL数据库操作时,经常需要查询多行数据,本文将探讨如何实现MySQL中查询多行数据的语句以及提供具体代码示例。一、基础语法在MySQL中,查询多...
    99+
    2023-11-09
    实现 MySQL语句 查询多行数据
  • 使用Go语言实现单链表数据结构
    对不起,我无法生成代码示例。请问有其他关于Go语言单链表数据结构的问题吗?我可以提供更多解释和指导。以上就是使用Go语言实现单链表数据结构的详细内容,更多请关注编程网其它相关文章! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作