首页 > 其他分享 >【golang】json数据解析 - 嵌套json解析

【golang】json数据解析 - 嵌套json解析

时间:2022-09-25 19:58:26浏览次数:56  
标签:map string golang json result interface 解析 data

@

目录

1. 通过结构体映射解析

原数据结构
在这里插入图片描述

解析

// 结构体
type contractJson struct {
	Data  []transaction `json:"data"`
	Total int           `json:"total"`
}
// data下的数组
type transaction struct {
	Result       string `json:"result"`
	OwnerAddress string `json:"ownerAddress"`
}

		// rs是http请求返回的数据
		rs := string(body)
		if rs == "" {
			return nil
		}

		contractJson1 := contractJson{}
		err := json.Unmarshal([]byte(rs), &contractJson1)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(contractJson1.Data[1])

2. 嵌套json解析-map

// http请求返回的json数据
result := SendHttp(urls, method, rawurl, cookie)
	fmt.Println(result)

	// 定义make(map[string]interface{})
	r := make(map[string]interface{})
	fmt.Println([]byte(result))
	// 调用标准库encoding/json的Unmarshal
	// 将JSON数据(JSON以字符串形式表示)转换成[]byte,并将数据加载到对象r的内存地址
	json.Unmarshal([]byte(result), &r)
	// r["data"]是读取JSON最外层的key
	// 如果嵌套JSON数据,则使用map[string]interface{}读取下一层的JSON数据
	// 如读取key为data里面嵌套的result:r["data"].(map[string]interface{})["result"]
	// 如果JSON的某个key的数据以数组表示,则使用([]interface{})[index]读取数组中某个数据。
	// 如读取key为result的第四个数据:r["data"].(map[string]interface{})["result"].([]interface{})[3]
	fmt.Println(r["data"].(map[string]interface{})["result"].([]interface{})[3])
	

标签:map,string,golang,json,result,interface,解析,data
From: https://www.cnblogs.com/JavaPub/p/16728631.html

相关文章

  • 使用IOptionsSnapshot读取appsettings配置文件,将Json映射到对象
    {"Logging":{"LogLevel":{"Default":"Information","Microsoft.AspNetCore":"Warning"}},"AllowedHosts":"*","ConnectionStri......
  • loam详细代码解析与公式推导
    loam详细代码解析与公式推导(基础理论知识)一、基础坐标变换loam中欧拉角解算都采用RPY的解算方式,即先左乘R,再左乘P,最后左乘Y,用矩阵表示为:R=Ry*Rp*Rr。用个......
  • 11第十章:DockerFile解析
    一、DockerFile是什么1、说明Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。2、概述3、官网https://docs.docker.co......
  • ExecutorService、Callable、Future实现有返回结果的多线程原理解析
    原创/朱季谦在并发多线程场景下,存在需要获取各线程的异步执行结果,这时,就可以通过ExecutorService线程池结合Callable、Future来实现。我们先来写一个简单的例子——publ......
  • 规范你的 JSON 配置,试试 JSON schema
    不知道大家在写一些JSON配置时会不会经常觉得麻烦,每次都要打开文档去核对字段名称对不对、结尾有没有s、结构是否正确、是不是数组等问题。然而我最近发现一些开源项目......
  • 注解-自定义注解-元注解和解析注解
    注解-自定义注解-元注解元注解:就是用于描述注解的注解@Target:描述注解能够作用的位置@Retention:苗猪注解被保留的阶段@Documented:描述注解是......
  • golang goroutine协程泄露
      语言级别的并发支持是Go的一大优势,但这个优势也很容易被滥用。通常我们在开始Go并发学习时,常常听别人说,Go的并发非常简单,在调用函数前加上go关键词便可启动g......
  • golang值传递和引用传递
    Go中所有的参数传递都是值传递,拷贝的都是一个副本。但是,这里分两种情况讨论,引用类型 和 非引用类型。非引用类型(值类型):int,string,float,bool,数组和struct;特点:值类型变量......
  • 解析库beautifulsoup
    目录一、介绍二、遍历文档树三、搜索文档树(过滤)四、修改文档树五、总结一、介绍BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转......
  • GoLang之ACM控制台输入输出
    转自:https://blog.csdn.net/weixin_52690231/article/details/125436414    ......