Мне нужно получить часть строки, т.е.: { «токен»: «eyJ0eXjskdckjasdcaksdclkasdcsjnsc», "expiresOnTimestamp":9234234 }
Я пробовал использовать split, splitafter. Мне нужно получить этот токен, только токен.
Плохо, это не ввод, а вывод, это ответ, который я получаю при использовании POST-запроса, и мне нужно использовать только токен.
Вы должны разобрать его на map[string]interface{}
:
jsonInput := []byte(`{ "token":"eyJ0eXjskdckjasdcaksdclkasdcsjnsc", "expiresOnTimestamp":9234234 }`)
jsonContent := make(map[string]interface{})
unmarshalErr := json.Unmarshal(jsonInput, &jsonContent)
if unmarshalErr != nil {
panic(unmarshalErr)
}
token, _ := jsonContent["token"].(string)
Или создайте специальный struct
для unmarshal:
type Token struct {
Value string `json:"token"`
ExpiresOnTimestamp int `json:"expiresOnTimestamp"`
}
jsonInput := []byte(`{ "token":"eyJ0eXjskdckjasdcaksdclkasdcsjnsc", "expiresOnTimestamp":9234234 }`)
var jsonContent Token
unmarshalErr := json.Unmarshal(jsonInput, &jsonContent)
if unmarshalErr != nil {
panic(unmarshalErr)
}
token := jsonContent.Value
Плохо, я был неясен, токен json - это вывод, а не ввод, применимо ли ваше предложение?
Ваша структура JSON является входной, а token
является выходной в контексте приложения.
Ваш ввод представляет собой строку JSON, поэтому относитесь к ней так: используйте
encoding/json
. Не пытайтесь разделить его. Или даже лучше: поскольку это токен JWT, используйте специализированную библиотеку.