
map
:map[
/dbus-service:map[
org.freedesktop.DBus.Introspectable:map[]
org.freedesktop.DBus.Peer:map[]
org.freedesktop.DBus.Properties:map[]
Basket:map[
Fruit:"Apple"
]
]
При конвертации в
json
значение поле Fruit
"теряется":"/dbus-service":{
"org.freedesktop.DBus.Introspectable":{},
"org.freedesktop.DBus.Peer":{},
"org.freedesktop.DBus.Properties":{},
"Basket":
{
"Fruit":{}
}
}
Для вывода используется это:
fmt.Printf("%v", data)
jsonData, _ := json.Marshal(data)
fmt.Printf("json data: %s", jsonData)
Вопрос на засыпку: почему так происходит с
Fruit
?Marshal
'aлятся у Fruit:"Apple"
."Apple"
— имеет тип данных dbus.Variant
У него нету "публичных" свойств. Неэкспортируемых.
Экспортируемые пишутся с большой буквы.
Неэкспортируемые с маленькой.
Решение: создавать новое дерево
map
'ов с примитивными данными (string
вместо dbus.Variant
) путем рекурсии.@golang_interview