go语言怎么从(json后的)多层map中取值
// 一个PHP中的多层关联数组,即Go中的多层map,如何从json字符串中解析,然后取到map中的某个具体的值。
// 数据结构如下:
cityInfo := "{
"status": 0,
"result": {
"location": {
"lat": 39.88,
"lng": 118.69
},
"address": "河北省唐山市迁安市京哈高速公路",
"address_component": {
"nation": "中国",
"province": "河北省",
"city": "唐山市",
"district": "迁安市",
"street": "京哈高速公路",
"street_number": "京哈高速公路"
},
}
}"
// 我们这里取 cityInfo["result"]["address_component"]["district"] 这个值,即: 迁安市
// 我们使用的数据为json后的map, 内容与上面展示的完全相同,所以需要先从json解析到map
cityInfo := "{\"status\": 0,\"result\": {\"location\": {\"lat\": 39.88,\"lng\": 118.69},\"address\": \"河北省唐山市迁安市京哈高速公路\",\"address_component\": {\"nation\": \"中国\",\"province\": \"河北省\",\"city\": \"唐山市\",\"district\": \"迁安市\",\"street\": \"京哈高速公路\",\"street_number\": \"京哈高速公路\"}}}"
fmt.Println(cityInfo)
cityInfoMap := util.JSONToMap(cityInfo)
fmt.Println(cityInfoMap)
cityName, ok := cityInfoMap["result"].(map[string]interface{})["address_component"].(map[string]interface{})["district"]
fmt.Println(cityName) // 这里会输出迁安市, 取到对应的值,OK
// 上述代码中util.JSONToMap()方法的代码如下, 随便放到一个package中,然后引用即可,此处我放入到util包中。
// json转Map ()
func JSONToMap(str string) map[string]interface{} {
var tempMap = make(map[string]interface{})
err := json.Unmarshal([]byte(str), &tempMap)
if err != nil {
panic(err)
}
return tempMap
}
go语言怎么从(json后的)多层map中取值的更多相关文章
- json简介及josn数组中取字符
1.json字符串就是字符串,只不过格式是Json格式的,以键值对的形式存在,键和值可以是字符串,数字,空值,数组等. json对象在花括号中书写,一个json对象包含多个键值对,json对象以花括号 ...
- js 使用ES6 实现从json中取值并返回新的数组或者字符串
1.获取的json数据是这样的: data:[ { 'Id': '1', 'Phone': '123456', 'Name': '张三', }, { 'Id': '2', 'Phone': '7894 ...
- JSON序列化和反序列化 对decmail 取值问题
地图API返回经纬度:经度: 纬度: lng":114.03483089395202,"lat":22.615589046911805 decmail 接收数据后两位会截 ...
- iframe与src一个性质 当js中修改了src的值后会重新向后台发送请求 ;为了防止浏览器缓存问题 当我们修改src时候 需要添加不同的值 这样浏览器就不会从缓存中取值 而是重新发起后台请求
- 关于服务端控件textbox的disabled属性设置为disabled后在服务端无法取值的问题
在asp.net 1.x版本中,当textbox控件的disabled属性设置为disabled的时候看,在服务端还是可以通过控件id.text获取到textbox的值的,只是不能输入值而已.但是在以 ...
- store在模块化后,获取state中的值时undefined
目录结构 用this.$store.getters.showNotif ,加上模块名this.$store.getters.apply.showNotif都取不到值, 控制台打印store,发现这样的 ...
- 嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray
在复杂的JSON数据的格式中,往往会对JSON数据进行嵌套,这样取值会比之前的取值稍微复杂一点,但是只要思路清晰,其实取法还是一样的.就跟if else语句一样,如果if中套if,if中再套if,写的 ...
- JS给文本框赋值后,在页面后台取不到文本框值的解决方法
转自:http://www.cnblogs.com/qiaohd/archive/2012/03/23/2413660.html (ReadOnly.disabled 都有可能造成取值取不到) 开发一 ...
- python 获取的json字符串取值
获取到的json字符串,然后对其取值 {u'result': {u'10.10.10.100': {u'status': u'OK', u'msg': u"{'listen': {'': s ...
随机推荐
- layer弹框层学习笔记
这里对layer的笔记只是大概记录一下其使用过程,以便后续使用时快速回顾,更详细使用及介绍参考官网实例.链接在本文末 一 .初步了解layer-弹层之美 layer是一款近年来备受青睐的web弹层组件 ...
- CPU密集型、IO密集型
CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/ ...
- 使用graphviz绘制流程图
转自 http://www.cnblogs.com/CoolJie/archive/2012/07/17/graphviz.html
- jprofile 远程监控linux上的jvm
环境 客户端:win7+jprofiler_windows-x64_10_0_4.exe linux服务器:tomcat7+jdk1.7+jprofiler_linux_10_0_4.sh 一.客户端 ...
- UE4 RHI与条件式编译
RHI即RenderHardwareInterface, 即渲染硬件接口, 是UE为实现跨平台而实现的一套API. 每个RHI接口都为OpenGL, Vulkan, DX11等做了不同的实现. 在引擎 ...
- Hydra(爆破神器)使用方法
工具介绍 hydra是一个自动化的爆破工具,暴力破解弱密码,是一个支持众多协议的爆破工具,已经集成到KaliLinux中,直接在终端打开即可. hydra支持的服务有: POP3,SMB,RDP,SS ...
- JUC AQS ReentrantLock源码分析
警告⚠️:本文耗时很长,先做好心理准备,建议PC端浏览器浏览效果更佳. Java的内置锁一直都是备受争议的,在JDK1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6 ...
- Arduino基础入门—3.连接 IIC 1602 LCD显示文字
1. IIC转接板介绍 Arduino Uno R3开发板的外部IO口是非常有限的.在驱动LCD1602时,尽管我们的数据线使用了4线,相对于8线方式减少一半,但是在需要外接多种传感器的应用中,4线驱 ...
- mfc中循环显示图片
UINT CPalmIdentDlg::UpdateCImg(LPVOID p) { struct params *pa = (struct params*)p; int *imgarray = pa ...
- 【计算机视觉】深度相机(九)--OpenNI API及中间件说明
本文由官方文档翻译而来 总览 目的 OpenNI 2.0 API(应用程序编程接口)提供了访问PrimerSense的兼容深度传感器.这就使得一个应用程序能够初始化传感器和从设备接收深度(depth) ...