为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕盖茨4494581 2022-12-13 16:10:49
我正在用 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


查看完整回答
反对 回复 2022-12-13
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号