Go

[Golang]从Redis Pop出来Interface转St

2020-11-25  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读