2016-03-17 2 views
0

мне нужно отправить массив внутри объекта JSON со структурой:Построение объекта 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

Если вы ожидаете, что массив будет меняться в какой-то момент, рассмотреть возможность использования пакета кодирования/JSon

Затем вы можете создать STRUCT прототип вашего объекта JSON, а затем использовать JSON .Marshal() для сериализации его в [] байтовое представление объекта JSON для передачи (будь то stdio, tcp, whatever).

например.

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

Я overthinking его. Ответ был таков:

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

это недопустимо. Скопируйте эти цифры в квадратные скобки ([]). Кроме того, хотя вы можете статически выписывать строки, вы должны изучить использование пакета encoding/json для этого материала. –

+0

Я использовал его из r.PostFormValue («extent»), поэтому я просто использовал эти числа в качестве подставки. В действительности я использовал \t var jsonprep string = '{" extent ":' + r.PostFormValue ("extent") + '}' –

Смежные вопросы