go - 如何在 gval 表达式中添加引号

标签 go expression

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

相关文章:

pattern-matching - sml 中的逻辑简化

javascript - JavaScript 中的短路评估

mongodb - 如何insertOne到mongo数据库

python - 表达或声明? :'if a : do_something()' 和 '(a and do_somthing())' 哪个更好?

sql-server - 表达式变量在运行时发生变化

python - 在有越位规则的语言中,所有语言结构都可以是一流的吗?

go - 如何在dynamodb中设置查询结果限制

http - 何时使用 HTTP 代理

go - Youtube缩略图上传失败,API

go - 如何从 map 中检索值(value) - golang?