golang 递归方式解析json串

package mainimport ("fmt""encoding/json"
)func jsonArrayParse(vv []interface{}){for i, u := range vv {switch vv1 := u.(type) {case string:fmt.Println(i, "[string_] :", u)case float64:fmt.Println(i, "[float64_]:", u)case bool:fmt.Println(i, "[bool_]:", u)case nil:fmt.Println(i, "[nil_]:", u)case []interface{}:fmt.Println(i, "[array_] :", u)jsonArrayParse(vv1)case interface{}:fmt.Println(i, "[interface_]:",u)m1 := u.(map[string]interface{})jsonObjectParse(m1)default:fmt.Println("  ", i, "[type?_]", u, ", ",vv1)}}
}func jsonObjectParse(f interface{}){m := f.(map[string]interface{})for k, v := range m {switch vv := v.(type) {case string:fmt.Println(k, "[string] :", vv)case float64:fmt.Println(k, "[float64]:", vv)case bool:fmt.Println(k, "[bool]:", vv)case nil:fmt.Println(k, "[nil]:", vv)case []interface{}:fmt.Println(k, "[array]:")jsonArrayParse(vv)case interface{}:fmt.Println(k, "[interface]:",vv)m1 := v.(map[string]interface{})jsonObjectParse(m1)default:fmt.Println(k, "[type?]",vv)}}
}
func main() {jsonStr := []byte(`{"Name":"aree", "Age":18,"From": [ "SZ", "GD" ],"data":[{"a":"aa","b":null},{"c":[]},{"list":["dd",1,"650827..."]}]}`)//jsonStr := []byte(`[{"Name":"aree", "Age":18,"From": [ "SZ", "GD" ],"data":[{"a":"aa","b":null},{"c":[]},{"list":["dd",1,"ff"]}]}]`)if (strings.Index(string(jsonStr[:]), "[") == 0) {var f []interface{}err := json.Unmarshal(jsonStr, &f)if err != nil {fmt.Println(err)}jsonArrayParse(f)} else {var f interface{}err := json.Unmarshal(jsonStr, &f)if err != nil {fmt.Println(err)}jsonObjectParse(f)}
}

golang 递归方式解析json串相关推荐

  1. Rapidjson的简单使用(拼接json串,存取文件中的json,解析json串)

    Rapidjson的简单使用示例 很早就想用用Markdown了,一直没机会.今天就来试一下 先放个目录: Rapidjson的简单使用示例 rapidjson官方教程 本示例所用环境 示例代码与注释 ...

  2. pythonの鉴黄之路(五)——强行解析json串

    *以下内容并非正规解决方案,效仿请谨慎. 之前有介绍过阿里云的鉴黄API接口http://blog.csdn.net/sm9sun/article/details/53321888 其支持:porn: ...

  3. golang string切片解析json

    string切片在json解析中用到的比较多. package mainimport ("fmt""encoding/json" )type CateInfoA ...

  4. Java用JSONObject-lib来解析json串

    直接贴代码:(所需jar包:json-lib.jar,可能会关联一些其它的jar包,请自行搜索.)import java.util.ArrayList; import java.util.HashMa ...

  5. Http协议(下载笑话网页,Get方式解析json)

    自定义adapter: public class MyAdapter extends BaseAdapter {private Context context;private List<Joke ...

  6. 【Elasticsearch】使用 Elasticsearch Painless 脚本以递归方式遍历 JSON 字段

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载.有问题可以先私聊我,本人每天都在线,会帮助需要的人. 文章目录 0.概述 1. 介绍 2.案例 2.1 示 ...

  7. json解析详解 java_Java解析Json数据的两种方式详解

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  8. Oracle 使用GSON库解析复杂json串

    在前文中讲到了如何使用JSON标准库解析json串,参考: Oracle解析复杂json的方法(转) 现补充一篇使用GSON库在Oracle中解析复杂json的方法. GSON串的使用教程参考官方文档 ...

  9. gjson - Golang 解析 JSON

    文章目录 简介 主要类型 Type Result 方法 gjson result Path 修饰符 示例 介绍 自定义 备用 简介 Github 地址 go 安装: go get -u github. ...

最新文章

  1. 基本数据类型转换规则
  2. python爬虫算法深度优先_爬虫课程(四)|深度优先和广度优先算法
  3. 【c语言】蓝桥杯算法训练 简单加法(基本型)
  4. MYSQL的深入学习--优化步骤
  5. linux没有交换分区会怎样,linux – 服务器拒绝使用交换分区
  6. FFmpeg深度学习模块的历史、现状和计划
  7. .NET应用程序7种最常见的性能问题及其解决方案
  8. 小程序canvasu真机上数据图片不能使用
  9. Linux内核--基于Netfilter的内核级包过滤防火墙实现
  10. Pytorch中expand_as()函数详解
  11. WinForm窗体重要属性与公共控件的重要属性
  12. 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
  13. javascript的window.open()具体解释
  14. php Hash Table(二) Hash函数
  15. 小心:网上几乎所有的Kms-pico都带木马
  16. s3f9454可c语言编程,微处理器S3F9454BZZ-DK94
  17. PTA 数据结构与算法题目集(中文)7-38 寻找大富翁(25 分)快排或堆排序
  18. 小学生的游戏 FZU - 1575
  19. (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  20. Java、JSP实验室预约管理系统

热门文章

  1. Docker系列(八):Kubernetes横空出世背后的秘密
  2. 赵联松武汉大学计算机学院,武汉大学电气工程学院2018年优秀大学生暑期夏令.doc...
  3. 鸿蒙3部曲先看哪部,星辰变是“鸿蒙”系列的作品,那“鸿蒙”系列到底有多少部曲?...
  4. python中bind的用法_Python socket.bind方法代码示例
  5. 计算机与网络 文献,计算机与网络专著参考文献 计算机与网络参考文献怎么写...
  6. 不安分的管家——Jenkins
  7. LC6936-TWS耳机方案
  8. Android开发——进程间通信之Bundle和文件
  9. CP2101 usb转uart驱动
  10. AD域组策略管理-强制组策略更新报错(远程过程调用被取消8007071a、RPC服务器不可用800706ba)处理方法