使用数组作为值构建JSON对象

时间:2016-03-17 15:27:17

标签: go

我需要在JSON对象中发送一个具有以下结构的数组:

{"extent":[-76.0624694824, 36.8856620774, -75.9800720215,36.9449529607]}

我该怎么做?我不能使用典型的:

var jsonprep string = `{"extent":` + []float32{-76.0624694824, 36.8856620774, -75.9800720215, 36.9449529607} + `}`
var jsonStr = []byte(jsonprep)

因为类型不匹配。我试图将此发送到服务器,期望它是一个数组,因为我收到错误,

The request content was malformed:
Expected List as JsArray, but got "[-76.0624694824, 36.8856620774, -75.9800720215,36.9449529607]"

2 个答案:

答案 0 :(得分:2)

如果您希望数组在某些时候发生变化,请考虑使用encoding / json包

然后你可以创建你的JSON对象的结构原型,然后使用json.Marshal()将它序列化为JSON对象的[]字节表示以进行传输(无论是通过stdio,tcp,等等)。

e.g。

type ExampleJSON struct {
    Extent []float32 `json:"extent"`
}

func main(){
    var ex := &ExampleJSON{
        []float32{-76.0624694824, 36.8856620774, -75.9800720215, 36.9449529607}
    }
    jsonBytes, err := json.Marshal(ex)
    if err != nil {
        //...
    }
}

答案 1 :(得分:-1)

我在思考它。答案是:

var jsonprep string = `{"extent":[-76.0624694824, 36.8856620774, -75.9800720215, 36.9449529607]}`