2015-07-30 2 views
2

Я пытаюсь получить действительно что-то вроде этого: {"map": {}} не {"map":null}, но кодировка/json, похоже, обнаруживает, что это пустая карта и возвращает только последнюю стоимость.golang json encoding return {} для пустой карты

type test struct { 
    MyMap map[string]string `json:"map"` 
} 

func main() { 
    testval := test{} 
    asjson, err := json.Marshal(testval) 
    fmt.Println(testval) 
    fmt.Println(string(asjson)) 
} 

Выход как этот

{map[]} 
{"map":null} 

Я ищу, чтобы заставить его быть {"map":{}} предложения? Я попытался инициализировать карту вручную и использовать ссылку для нее. Кажется, я тоже ничего не даю. :/

ответ

9

test.MyMap не был инициализирован, поэтому nil. Инициализация это даст вам желаемый результат:

testval := test{ 
    MyMap: make(map[string]string), 
} 

https://play.golang.org/p/91vZtJeot3

+0

ARG! спасибо :) Я думал, что пробовал это, но нет:/ – rybit

+3

'map [string] string {}' также может использоваться – kostya