Контроллер возвращает json в виде строки

Я загружаю список элементов из базы данных и хочу вернуть его в виде Json. он работает хорошо, но ответ не является объектом json, это строка с проблемой на стороне получателя.

var products []*database.Product
num, err := o.QueryTable("product").Filter("date", date).All(&products)
fmt.Printf("Returned Rows Num: %d, %s", num, err)

var jsonData []byte
jsonData, err2 := json.Marshal(products)
if err2 != nil {
    fmt.Println(err)
}

this.Data["json"] = string(jsonData)
this.ServeJSON()

он возвращается

"[{\"Id\":\"68e7512f-ea50-45d3-a89e-845c7621b33d\",\"Producttypeid\":\"62c9ff0a-f599-4ac1-9442-ebae3bc049c1\",\"Producti...

но должно быть

[{"Id":"68e7512f-ea50-45d3-a89e-845c7621b33d","Producttypeid":"62c9ff0a-f599-4ac1-9442-ebae3bc049c1","Producti...

добавление аннотаций вроде json:"id" ничего не меняет. это проблема, потому что это массив? мне нужно обернуть это внутри структуры?


person Andre    schedule 27.10.2020    source источник
comment
Итак, вы устанавливаете this.Data["json"] в строковое значение упорядоченных продуктов. Попробуйте сделать просто this.Data["json"] = products   -  person Z. Kosanovic    schedule 27.10.2020
comment
это один из тех моментов, когда хочется укусить себя за задницу... спасибо! это работает сейчас   -  person Andre    schedule 28.10.2020


Ответы (1)


как упоминалось в комментариях Косановича, решение очень простое, просто не маршируйте себя.

var products []*database.Product
num, err := o.QueryTable("product").Filter("date", date).All(&products)
fmt.Printf("Returned Rows Num: %d, %s", num, err)

this.Data["json"] = products
this.ServeJSON()
person Andre    schedule 28.10.2020