Для того чтобы создать одну структуру, которая может использоваться для разных источников JSON, вам следует использовать возможности маршалинга и анмаршалинга данных в формате JSON в Go.
Go предоставляет пакет encoding/json, который позволяет работать с JSON данными. Этот пакет имеет функции Marshal и Unmarshal, которые позволяют преобразовывать данные в формат JSON и наоборот.
Прежде всего, вы должны определить структуру, которая будет соответствовать вашим JSON данным из разных источников. Для каждого поля в JSON вы должны добавить аннотацию в виде тэга в определении поля. Теги позволяют настраивать способ преобразования JSON данных в Go и наоборот.
Ниже приведен пример структуры, которая может использоваться для разных источников JSON:
type MyData struct { Field1 string `json:"field1"` Field2 int `json:"field2"` Field3 bool `json:"field3"` }
В этом примере структура MyData имеет три поля: Field1, Field2 и Field3. Каждое поле имеет аннотацию json, которая указывает, как это поле должно быть преобразовано в JSON и обратно. В данном случае, значение field1
будет соответствовать полю Field1
в структуре, значение field2
будет соответствовать полю Field2
, и так далее.
Теперь вы можете использовать функции Marshal и Unmarshal из пакета encoding/json для работы с данными. Например, для преобразования структуры MyData в JSON можно использовать следующий код:
data := MyData{ Field1: "value1", Field2: 123, Field3: true, } jsonData, err := json.Marshal(data) if err != nil { log.Fatal(err) } fmt.Println(string(jsonData))
А для преобразования JSON обратно в структуру MyData можно использовать следующий код:
jsonString := `{"field1":"value1","field2":123,"field3":true}` var data MyData err := json.Unmarshal([]byte(jsonString), &data) if err != nil { log.Fatal(err) } fmt.Println(data.Field1) fmt.Println(data.Field2) fmt.Println(data.Field3)
Таким образом, вы можете использовать функции Marshal и Unmarshal из пакета encoding/json, а также аннотации json в структуре, чтобы создать универсальную структуру для разных источников JSON в Go.