Я вытащил некоторые данные из данной базы данных - однако формат не соответствует желаемому.
Пример структуры:
type myStruct struct {
ID int `json:"Id"`
Language string `json:"Language"`
Location string `json:"Location"`
}
Правильно, я сериализую заданную карту строк с пользовательской структурой, представляющей заданные возвращенные столбцы:
func transformJSON(extract []map[string]*sql.SqlCell) ([]byte, error) {
return json.MarshalIndent(extract, "", " ")
}
Возвращает действительный JSON, но в формате:
{
{
"id": {
"Value": {
"Long": 12353
}
},
"language": {
"Value": {
"String_": "ja-JP"
}
},
"location": {
"Value": {
"String_": "Osaka"
}
},
Ссылаясь на мою структуру выше, я хотел бы иметь такой формат:
[
{
"Id": 12353,
"Language": "ja-JP",
"Location": "Osaka"
},
// .. other objects
]
Предполагая, что тот же самый ввод для func transformJSON
, как бы я сопоставил вложенные ключи со значениями типа столбца?
Должен ли я Marshal
сначала карту, затем преобразовать данные - или работать непосредственно со структурой данных []map[string]*sql.SqlCell
до маршала?
В своей голове я думал так:
func transformJSON(extract []map[string]*sql.SqlCell) ([]byte, error) {
struct :=[] myStruct{}
// Loop over extract objects, match nested keys, write to struct?
return json.MarshalIndent(struct, "", " ")
}