[Golang]从Redis Pop出来Interface转String之后解析Json发生错误

_小老虎_ · · 87 次点击 · · 开始浏览    


popData为从Redis取出来的数据,Interface{} 类型,转换String

错误解法

                        var popJsonStr string = popData.(string)
            fmt.Println(popJsonStr)

            var taskData map[string]string
            err = json.Unmarshal([]byte(popJsonStr), &taskData)

            fmt.Println("================== TEST TASK DATA ====================")
            fmt.Println(taskData)
            if nil != err {
                fmt.Println(err.Error())
                continue
            }
            //处理

正确解法

需要用Unquote函数解析引号。

函数假设s是一个半引号、双引号、反引号包围的go语法字符串,解析它并返回它表示的值

                        var popJsonStr string = popData.(string)
            fmt.Println(popJsonStr)

            jsonInput, err := strconv.Unquote(popJsonStr)
            if nil != err {
                fmt.Println(err.Error())
                continue
            }

            var taskData map[string]string
            err = json.Unmarshal([]byte(jsonInput), &taskData)

            fmt.Println("================== TEST TASK DATA ====================")
            fmt.Println(taskData)
            if nil != err {
                fmt.Println(err.Error())
                continue
            }
            //处理

参考文献:
https://stackoverflow.com/questions/51478658/json-cannot-unmarshal-string-into-go-value-of-type-main-kvu

https://blog.csdn.net/xiaobafacai/article/details/77924491


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:_小老虎_

查看原文:[Golang]从Redis Pop出来Interface转String之后解析Json发生错误

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:1006366459

87 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传