我阅读了JSON文件,以获取要通过gval库评估的表达式。我希望它编译在字符串 slice 中具有值的JSON字符串。

func main() {
    jsonConfig := `{"exp": "\"{\" + \"\\u0022\" + fields[0] + \"\\u0022\" + \": \" + \"\\u0022\" + fields[1] + \"\\u0022\" + \"}\""}`

    m := map[string]string{}
    err := json.Unmarshal([]byte(jsonConfig), &m)

    values := []string{"fieldA", "valA"}
    res, err := gval.Evaluate(m["exp"], map[string]interface{}{"fields": values})

    if err != nil {
        fmt.Printf("failed to evaluate: %v\n", err)
        return
    }

    fmt.Printf("success: (%T) %v\n", res, res)
}
结果是
success: (string) {"fieldA": "valA"}
问题是在表达式中添加引号。我使用了\u0022,但对我来说似乎很尴尬。还有其他办法吗?

最佳答案

我不确定是否需要进行解组,您应该能够修改配置并将其直接传递给gval.Evaluate-参见下文:

main(){
config:=`“{\”“+字段[0] +” \“:\”“+字段[1] +” \“}”`
值:= [] string {“fieldA”,“valA”}
res,err:= gval.Evaluate(config,map [string] interface {} {“fields”:values})
如果err!= nil {
fmt.Printf(“评估失败:%v \ n”,错误)
返回
}
fmt.Printf(“成功:(%T)%v \ n”,res,res)
}

结果将是:

成功:(字符串){“fieldA”:“valA”}

关于go - 如何在gval表达式中添加引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62102497/

10-09 01:10