0
я использую интерфейс json.Marshal
принять map[string]interface{}
и преобразовать его в []byte
(это массив байт?)Создать-структуру из массива байтов
data, _ := json.Marshal(value)
log.Printf("%s\n", data)
я получаю этот выход
{"email_address":"[email protected]","street_address":"123 Anywhere Anytown","name":"joe","output":"Hello World","status":1}
Базовые байты относятся к структуре нижеследующей декларации
type Person struct {
Name string `json:"name"`
StreetAddress string `json:"street_address"`
Output string `json:"output"`
Status float64 `json:"status"`
EmailAddress string `json:"email_address",omitempty"`
}
Я бы хотел ike принять data
и сгенерировать переменную типа Person struct
Как это сделать?
Awesome! Это работает! Хотя у меня есть два следующих вопроса: это кажется немного круговым - мы сначала маршалируем, а затем беспоснаряем - это нормально? Есть ли способ напрямую получить структуру Person из интерфейса map [string] {}? , Мой второй вопрос: давайте скажем, что поле email_address не было в данных (так как это поле с неопределенностью). Нужно ли мне что-то делать с призывом Unmarshal? Или выше все еще будет работать? – wrecktangle
@nthacker, это несколько круговое движение, но для всех, что я знаю, нет простого способа преобразования карты непосредственно в структуру. Реальный вопрос, однако, заключается в том, где вы получаете первую карту? Почему вещь, которая производит это, не просто дает вам структуру? Возможно, вы могли бы реорганизовать свой код, чтобы вам вообще не нужна карта. Что касается вашего второго вопроса ... есть ли что-то, что мешает вам попробовать себя? – Aedolon
Вы правы по обоим пунктам! Спасибо, я посмотрю на обоих! – wrecktangle