美文网首页Go
[Golang]从Redis Pop出来Interface转St

[Golang]从Redis Pop出来Interface转St

作者: _小老虎_ | 来源:发表于2020-11-25 16:09 被阅读0次

    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转St

        本文链接:https://www.haomeiwen.com/subject/nbyniktx.html