Как добавить кавычки в выражение gval - PullRequest
0 голосов
/ 30 мая 2020

Я прочитал JSON файл, чтобы получить выражение для оценки библиотекой gval. Я хочу, чтобы он скомпилировал 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, но мне это кажется неудобным. Есть ли другой способ?

1 Ответ

0 голосов
/ 01 июня 2020

Я не уверен, что демаршал, который вы делаете, необходим, вы можете просто изменить конфигурацию и передать ее прямо в gval.Evaluate - см. Ниже:


    main() {
        config := `"{\"" + fields[0] + "\":\" " + fields[1] + "\"}"`
        values := []string{"fieldA", "valA"}
        res, err := gval.Evaluate(config, 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"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...