如何在 Go 中构建嵌套的动态 JSON

我正在用 Go 编写一个简单的 API,它从数据库中读取并输出 GeoJSON。

我有这个工作的简单点。但是我的一些数据是线(linestring)。我想要一个通用的 GeoJSON 结构定义。但是,正如 GeoJSON 中指定的那样,“Features”元素有一个“Coordinates”子元素,它包含一个 [2]float32 点坐标,或者一个线和多边形的点数组

有没有办法以这种方式在 Go 中定义结构?我来自 PHP,如果使用弱类型数组,那将是微不足道的。

如果我不能用结构来做——除了拼凑一个字符串之外,还有什么是 Go 中正确的方法?

注意:类似的问题都是关于解组动态 JSON 的。我需要根据数据库内容构建一个。


慕盖茨4494581
浏览 109回答 1
1回答

慕沐林林

您可以创建一个map[string]any,为其设置值Coordinates,然后对其进行编组。像这样例如:package mainimport (    "encoding/json"    "fmt")type Point struct {    X, Y int}func main() {    m := map[string]any{}    var singleCoordinate bool    if singleCoordinate {        m["Coordinates"] = []float32{1, 2}    } else {        m["Coordinates"] = []Point{{X: 1, Y: 2}, {X: 2, Y: 2}}    }    data, err := json.Marshal(m)    fmt.Println(string(data), err)}游乐场:https://go.dev/play/p/8mJHJ-e-kyX
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go