@TemaKam

Как преобразовать interface в string?

package main

import "fmt"

func main() {

	code := map[string]interface{}{
		"test": "test",
	}

	myString := fmt.Sprintf("%v", code)
	fmt.Println(myString)
}

выводит
map[test:test]
я хочу получить на выходе просто строку без всяких map
"{"test":"test"}"
так не работает
code.(string)
interface conversion: interface {} is map[string]interface {}, not string


реально ли просто джсон или массив джсонов сделать строкой?

суть почему сразу не в строке: в сервисе надо обрабатывать поля объекта, менять их, а отсылать наружу уже просто строкой
  • Вопрос задан
  • 533 просмотра
Решения вопроса 1
@TemaKam Автор вопроса
закостылил как то так
package main

import (
	"encoding/json"
	"fmt"
)

func main() {

	code := map[string]interface{}{
		"test": "test",
	}
	b, err := json.Marshal(code)
	if err != nil {
		fmt.Printf("Error: %s", err)
		return
	}
	fmt.Println(string(b))
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Mi11er
@Mi11er
A human...
вам смотреть в сторону json.Unmarshal
Ответ написан
https://go.dev/play/p/-aB5SS1amav
package main

import (
	"fmt"
	"log"
)

func main() {
	code := map[string]interface{}{
		"test": "test",
	}

	// извлекаем interface{} из мапы внутри которого строка
	ifaceStr := code["test"]

	// извлекаем строку из interface{}
	str, ok := ifaceStr.(string)
	if !ok {
		log.Fatal("it's not a string")
	}
	fmt.Println(str)
}


Но почему бы вам не делать анмаршал в map[string]string сразу? Чтобы не конвертить лишний раз?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы