zoukankan      html  css  js  c++  java
  • golang json格式字符串反序列化映射到切片结构体

    前文 : https://www.cnblogs.com/zengxm/p/13488448.html

    https://www.cnblogs.com/zengxm/p/13473340.html


    如果业务查询返回json格式字符串,但是该字符串含有多个map,需要将字符串反序列化到切片结构体中

    反序列化的结构体

    貌似有个坑,如果内嵌的切片结构体被命名之后反序列化错误

    mysql查询代码

    var result []SelectData
    SQL := "SELECT u.u_id,u.nickename,u.username, " +
            "CONCAT('{"datas":[',GROUP_CONCAT('{"cid":',c.c_id,',"title":"',c.c_name,'","price":',c.price,',"info":"',c.info,'"}'),']}') as datas " +
            "FROM users AS u " +
            "JOIN curriculums AS c " +
            "ON c.u_id = u.u_id " +
            "WHERE c.c_name like '%o%' GROUP BY u.u_id"
    conn.Raw(SQL).Scan(&result)

    返回的结果为多个,resukt为切片,执行循环反序列化

    for index,_ := range result{
       
            result[index].JsonStr = strings.Replace(result[index].JsonStr,"
    ","",-1)
    
            err := json.Unmarshal([]byte(result[index].JsonStr),&result[index].Mid)
            if err != nil {
                panic(err)
            }
            //fmt.Println(result[index].Mid)
            /*
            反序列化到结构体
            {[{102 0 python 学习 20 python   <nil> <nil> <nil> 0} {103 0 golang 学习 70.79 go语言 gin框架  <nil> <nil> <nil> 0}]}
            {[{117 0 测试保存视频,视频url保存在阿里云oss上 9.99 test in  <nil> <nil> <nil> 0}]}
             */
            result[index].JsonStr = ""
            fmt.Println(result[index])
        /*
        {{100000 acfun 7745742641 0 0 <nil> <nil> 0} {[{102 0 python 学习 20 python <nil> <nil> <nil> 0} {103 0 golang 学习 70.79 go语言 gin框架 <nil> <nil> <nil> 0}]}}
        {{100006 giligililllsa666 z99999es 0 0 <nil> <nil> 0} {[{117 0 测试保存视频,视频url保存在阿里云oss上 9.99 test in <nil> <nil> <nil> 0}]}}
        */
    }

    参考资料:https://stackoverflow.com/questions/21830447/json-cannot-unmarshal-object-into-go-value-of-type

  • 相关阅读:
    字段名删不掉
    刷新f5/ctrl+f5
    大量数据模拟
    sub_query join drupal7 view_query_alter
    测试风格的代码
    csv/excel乱码
    window.location.reload(true)的异步现象
    扫描条形码
    yield %%% generator
    batch example
  • 原文地址:https://www.cnblogs.com/zengxm/p/13494102.html
Copyright © 2011-2022 走看看