首页 > 其他分享 >golang json字符串转结构体

golang json字符串转结构体

时间:2023-08-02 18:26:55浏览次数:37  
标签:map string err fmt golang interface json 字符串

1、不知道结构体类型的情况下

func JsonStringToMap(jsonStr string) (map[string]interface{}, error) {
    //未知值类型
    m := make(map[string]interface{})
    err := json.Unmarshal([]byte(jsonStr), &m)
    if err != nil {
        fmt.Printf("Unmarshal with error: %+v\n", err)
        return nil, err
    }

    return m, nil
}


res := JsonStringToMap(response.ToJsonString())
resp, ok := res["Response"].(map[string]interface{})
if ok {
    for _, v := range resp["Machines"].([]interface {}){
        fmt.Println(v.(map[string]interface{})["Ip"])
        fmt.Println(v.(map[string]interface{})["Status"])
    }
}

慢慢断言拆数据,属实很麻烦。

2、在知道结构体类型的情况下

func JsonStringToMap_v2(jsonStr string)  {
    //未知值类型
    var dmrp cls.DescribeMachinesResponse

    err := json.Unmarshal([]byte(jsonStr), &dmrp)
    if err != nil {
        fmt.Printf("Unmarshal with error: %+v\n", err)
    }

    for _,v := range dmrp.Response.Machines {
        fmt.Println(*v.Ip)
        fmt.Println(*dmrp.Response.AutoUpdate)
    }
}

相对方便多了。

 

3、刚开始找了第一种办法,感觉太麻烦,之后发现第二种办法,用了第二种办法后发现在函数的返回类型里面直接可以使用未转成json串之前的数据结构,不熟悉的代价就是花时间折腾。

标签:map,string,err,fmt,golang,interface,json,字符串
From: https://www.cnblogs.com/bill2014/p/17601431.html

相关文章

  • Python 字符串
    类数组>>>hello="Hello,World">>>print(hello[1])e>>>print(hello[-1])d获取位置 1 或最后的字符循环>>>forcharin"foo":...print(char)foo遍历单词 foo 中的字母切片字符串┌───┬───┬───┬───┬───┬───┬───┐|m|y|b|......
  • MySQL8.0 JSON数据类型
    (目录)JSON数据类型MySQL8.0支持原生的JSON数据类型。JSON数据类型存在以下优点自动验证存储在json列中的JSON文档,无效文档会产生错误优化存储格式。json列中的文档被转换为内部格式,可以直接对文档元素进行快速读取访问。JSON值JSON值类型在MySQL中,JSON值可以是字符串/数......
  • 代码随想录算法训练营第四十三天| 583. 两个字符串的删除操作 72. 编辑距离
    583.两个字符串的删除操作要求:删除最少的步数,来让这两个字符串相等思路:求末尾的最长公共子序列的长度,然后减去他们的长度代码:1//要求:两个字符串,删除任意一个字符后,让这两个字符相等2//dp[n][m]以n-1结尾的字符串变成节点为m-1为子序列的最大个数3//4//求......
  • 字符串解密
    题目描述小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字变成数字每个回台,小明可以用当前的数字加上或减去一个数字现在有两种数字可以用来加减,分别为其中数字没有使用次数限制请问小明最少可以用多少次,才能将数字变成数字题目保证数字一定能变成数字输入描述输入的唯一一行......
  • 通过pattern来匹配字符串,Pattern类的compile方法,接收一个字符串作为匹配模板
    publicstaticStringextractSubstring(Stringinput,Stringpattern){PatternregexPattern=Pattern.compile(pattern);Matchermatcher=regexPattern.matcher(input);if(matcher.find()){returnmatcher.group(1);}returnnull;}input......
  • post 传递参数 只有data json 和**kwargs, 不能是params
    importrequestsHOST='https://ip.com'URL='/posts/'url=HOST+URLjson={"title":"foo","body":"bar","userId":1}res=requests.post(url,json=json)print(res.json())print(......
  • Json Web Token
    什么是JsonWebTokenJWT代表JSONWebToken,是一种用于在网络应用中传递信息的安全、紧凑的标准。它主要用于身份验证和授权,并且被广泛用于前后端分离的应用和单点登录系统。JWT由三部分组成,通过点号(.)分隔,分别是:Header(头部):包含了两部分信息,令牌的类型(通常是"JWT")和所使用的......
  • C语言, 字符串
    #include<stdio.h>#include<stdlib.h>#include<string.h>char*tt3="web数学算法";intstr_comparer(){//字符串是个指向字符串开头的指针char*tt1="aac";char*tt2="aa";//字符串可以直接转换成整数,前面加......
  • golang并发编程
    23协程(Goroutine)定义:协程(goroutine)是Go语言中的一种轻量级线程,可以在单个线程中同时执行多个任务。使用方法:在调用函数时gofunction()在函数中使用协程时,需要注意以下几点:协程的执行是异步的,因此需要使用通道等方式进行同步。协程共享内存空间,因此需要使用互斥......
  • Golang基础
    1、GOLANG概述1.1语言特点1.2开发工具1.3相关文档官方编程指南标准库API文档2、规范的代码风格&注释2.1注释&注释风格2.2缩进&空白3、编码4、数据类型4.1基本数据库类型变量常量整型浮点型字符串布尔类型指针基本数据类型零值4.2复合数据类型数......