我阅读了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/