Есть ли у Голанга что-то вроде ast.literal_eval () в python для преобразования строкового представления карты в реальный объект карты? - PullRequest
0 голосов
/ 28 октября 2019

Мне нужно преобразовать строковое представление объекта карты в реальный объект карты в Go. Python имеет эту функцию через ast.literal_eval () и ищет что-то похожее в Go.

Я проверил Ast's lib lib https://golang.org/pkg/go/ast, но я не нахожу подобную функциональность. Также сторонняя библиотека lib https://github.com/apaxa-go/eval, которая "появляется" для поддержки этого с помощью своего примера кода в файле readme (хотя и не относится к картам):

src:="int8(1*(1+2))"
expr,err:=ParseString(src,"")
if err!=nil{
    return err
}
r,err:=expr.EvalToInterface(nil)
if err!=nil{
    return err
}
fmt.Printf("%v %T", r, r)   // "3 int8"

Но при попытке с картой:

myMap := "map[blah:1 stuff:2 list:3]"
expr, err := eval.ParseString(myMap, "")
if err != nil{
    log.Fatal("%v", err)
}
log.Printf("%v %T", expr, expr)
result, err := expr.EvalToInterface(nil)
if err != nil{
    log.Fatal("%v", err)
}
log.Printf("%v %T", result, result)

Я получаю следующее сообщение об ошибке:

2019/10/27 18:38:27.242352 main.go:33: %vexpression:1:9: expected ']', found ':'

, где строка 33 - это выражение:

expr, err := eval.ParseString(myMap, "")

Я довольно новичок в Go, поэтому я мог быподходить к этому с неправильного направления. Любая помощь будет оценена. Конечная цель - взять это строковое представление карты и преобразовать его в JSON.

1 Ответ

0 голосов
/ 28 октября 2019

Неверное представление карты в myMap. Вы должны написать это так

map[string]int{"foo": 1, "bar": 2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...