从 types.JSON.TEXT 转换为字符串列表

Convert from types.JSON.TEXT to list of strings

我有一个 JSON.TEXT (https://godoc.org/github.com/jmoiron/sqlx/types#JSONText),我需要将其转换为字符串列表。例如,你如何转换

"[equals, less than]" // JSON.TEXT type

["equals", "less than"] // list of strings

我试图通过使用 string()、修剪 [] 括号并加入它们来显式转换 JSON.TEXT 类型,但我最终带有奇怪反斜杠的字符串数组:

["\"equal to\"", " \"less than equal to\""]

是否有其他方法可以实现此目的,或者我怎样才能去掉反斜杠?

从您的 trim/split 的结果来看,您的变量似乎是

types.JSONText([]byte(`["equals", "less than"]`))

要将其转换为一段字符串,您可以使用 json.Unmarshal 函数

package main

import (
    "encoding/json"
    "fmt"

    "github.com/jmoiron/sqlx/types"
)

func main() {
    txt := types.JSONText([]byte(`["equals", "less than"]`))
    var slice []string
    json.Unmarshal(txt, &slice)
    fmt.Println(slice)
}

这里有一个 link 去游乐场:https://play.golang.com/p/cAiJjWNu8Vx

package main

import (
    "encoding/json"
    "fmt"
    "github.com/jmoiron/sqlx/types"
    "strings"
)


func main() {
    a := types.JSONText([]byte(`"[equals, less than]"`))

    var s string
    json.Unmarshal(a, &s)
    trim := strings.Trim(s, "[ ]") // equals, less than (string)

    str := strings.Split(trim,",") // [equals  less than] (slice string)

    f, _ := json.Marshal(str) 
    fmt.Println(string(f)) // ["equals"," less than"] (string)
}

您需要先解组,然后 trim [] 字符,然后将字符串拆分为切片并再次编组字符串