我正在用 Go 撰寫一個從資料庫讀取并輸出 GeoJSON 的簡單 API。
我有這個作業簡單的點。但是我的一些資料是行(linestring)。我想要一個通用的 GeoJSON 結構定義。但是,正如 GeoJSON 中所指定的,“Features”元素有一個“Coordinates”子元素,它包含一個 [2]float32 點坐標,或者一個用于線和多邊形的點數組。
有沒有辦法以這種方式在 Go 中定義結構?我來自 PHP,并且使用弱型別陣列,這將是微不足道的。
如果我不能用結構來做到這一點 - 除了將字串拼湊在一起之外還有什么是 Go 中的正確方法?
注意:類似的問題都是關于解組動態 JSON 的。我需要從資料庫內容構建一個。
uj5u.com熱心網友回復:
您可以創建一個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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/474693.html
