我正在用 Go 编写一个简单的 API,它从数据库中读取并输出 GeoJSON。我有这个工作的简单点。但是我的一些数据是线(linestring)。我想要一个通用的 GeoJSON 结构定义。但是,正如 GeoJSON 中指定的那样,“Features”元素有一个“Coordinates”子元素,它包含一个 [2]float32 点坐标,或者一个线和多边形的点数组。有没有办法以这种方式在 Go 中定义结构?我来自 PHP,如果使用弱类型数组,那将是微不足道的。如果我不能用结构来做——除了拼凑一个字符串之外,还有什么是 Go 中正确的方法?注意:类似的问题都是关于解组动态 JSON 的。我需要根据数据库内容构建一个。
1 回答

慕沐林林
TA贡献2016条经验 获得超9个赞
您可以创建一个map[string]any,为其设置值Coordinates,然后对其进行编组。像这样例如:
package main
import (
"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
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消