我阅读 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
- 见下文:
主要的() {
配置 := `"{\""+ fields[0] + "\":\""+ fields[1] + "\"}"`
值:= []字符串{“fieldA”,“valA”}
res, err := gval.Evaluate(config, map[string]interface{}{"fields": values})
如果错误!= nil {
fmt.Printf("评估失败:%v\n", err)
返回
}
fmt.Printf("成功: (%T) %v\n", res, res)
}
结果将是:
成功:(字符串){“fieldA”:“valA”}
关于go - 如何在 gval 表达式中添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62102497/