golang 字符串 json格式解析

golang字符串json格式解析

大家好,又见面了,我是你们的朋友全栈君。

    最近在用golang写关于微信方面的东西,首先遇到的就是将字符串转换成golang的json格式,利用corpid和corpsecret返回的是一个json格式的字符串,其格式如下:
{"access_token":"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m","expires_in":7200}
    我们可以把它转换成一个map[string]interface{}类型的数据,相关代码如下:
    str:="{\"access_token\":\"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m\",\"expires_in\":7200}"
    var dat map[string]interface{}
    if err := json.Unmarshal([]byte(str), &dat); err == nil {
        fmt.Println(dat)
        fmt.Println(dat["expires_in"])
    } else {
        fmt.Println(err)
    }
    运行的结果如下:
map[access_token:uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m expires_in:7200] 7200
    我们还可以定义一个结构体,将数据转换成对应的结构体对象,再获取相应的数据,定义一个weixintoken结构体:
type weixintoken struct { 
   
    Tokens string `json:"access_token"`
    Expires int `json:"expires_in"`
}
    注意相应变量首字母的大小写(首字母小写不可见,大写可见,具体查看golang的变量相关的内容),将JSON绑定到结构体,结构体的字段一定要大写,否则不能绑定数据。
    ret:="{\"access_token\":\"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m\",\"expires_in\":7200}"
    var config weixintoken
    if err := json.Unmarshal([]byte(ret), &config); err == nil {
        fmt.Println(config)
        fmt.Println(config.Tokens)
    }else {
        fmt.Println(err)
    }
    运行结果如下:
{
  
  "access_token":"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m","expires_in":7200}
{uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m 7200}

参考:http://golangtc.com/t/5322b2ea320b523f0a000075
http://www.tuicool.com/articles/BFruI3
http://www.cnblogs.com/fengbohello/p/4665883.html
https://segmentfault.com/q/1010000005025933/a-1020000005032034
http://www.cnblogs.com/go-ios/p/3906251.html
http://blog.csdn.net/tiaotiaoyly/article/details/38942311

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126928.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java安全之SnakeYaml反序列化分析

    Java安全之SnakeYaml反序列化分析0x00前言偶然间看到SnakeYaml的资料感觉挺有意思,发现SnakeYaml也存在反序列化利用的问题。借此来分析一波。0x01SnakeYa

    2021年12月12日
    70
  • java redis 配置文件_redis配置文件详解(生产环境配置)

    java redis 配置文件_redis配置文件详解(生产环境配置)#当本机为从服务时,设置主服务的连接密码#masterauth#当一个slave失去和master的连接,或者同步正在进行中,slave的行为有两种可能:#1)如果slave-serve-stale-data设置为”yes”(默认值),slave会继续响应客户端请求,可能是正常数据,也可能是还没获得值的空数据。#2)如果slave-serve-stale-data设置为…

    2022年6月11日
    70
  • BZOJ 1212 HNOI2004 L语言 AC自己主动机(Trie树)+动态规划

    BZOJ 1212 HNOI2004 L语言 AC自己主动机(Trie树)+动态规划

    2022年1月8日
    41
  • AWR

    AWR

    2022年2月5日
    68
  • XXE漏洞原理[通俗易懂]

    XXE漏洞原理[通俗易懂]XXE漏洞是XML外部实体注入漏洞,那什么是外部实体呢?XMLDTD1、文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。2、DTD可被成行地声明于XML文档中,也可作为一个外部引用。Ps:第二条是重点,也是XXE漏洞产生的原因,DTD可以定义外部实体并引用DTD语法若DTD要在XML文档中使用,他需要包含在·DOCTYPE声明…

    2022年5月10日
    45
  • linux通配符大全_linux中rmdir命令

    linux通配符大全_linux中rmdir命令linux基础(通配符的使用)你好!这里是面向新手的linux入门指南,这节课我会整理我所知道的linux中的通配符,希望和大家一起学习通配符的概念首先通配符绝对不是正则表达式,通配符基础只有4个:***,?,[],[^]**。这些一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等符号*:该符号表示一个或多个字符例如:*finda为找a开头的文件符号?:表示代替单个字符符号[list]:表示匹配list中的任意单一字符【0,9】—

    2026年1月23日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号