У меня есть данные, полученные от Elasticsearch с использованием github.com/olivere/elastic. Такие работы, когда я добавляю его в свою структуру и натягиваю ее, например,
data := Api {
Total: myTotal,
Data: string(result),
}
c.JSON(http.StatusOK, totalData)
api - это такая структура,
type Api struct {
Total interface{}
Data interface{}
}
Это возвращает данные в порядке, от 1 до любого количества результатов по запросу. Как результаты, загруженные в интерфейс данных, не экранируются или что-то в этом роде, например
"Data":"{\"CID\":\"XXXXXXXXXX\",\"Link\":\"XXXXXXXXX\",
Поэтому я попытался демаршалировать данные перед добавлением их в структуру api.
var p DataApi
err := json.Unmarshal(result, &p)
if err != nil {
panic(err)
}
totalData := Api {
Total: myTotal,
Data: p,
}
c.JSON(http.StatusOK, totalData)
Этот вид работает нормально, возвращает данные правильным образом, но только при загрузке одного результата. Когда запрашиваются 2 или более результатов, я получаю эту ошибку из-за паники без маршала.
invalid character '{' after top-level value
Я пробовал и гуглил повсюду, но не могу найти решение этой проблемы? Я не уверен, что делаю не так? DataApi - это вложенный набор структур, я не был уверен, есть ли что-то, что мне нужно из-за этого?
Это выполняется в рамках Gin.
Спасибо.
РЕДАКТИРОВАТЬ
Поэтому, когда я использую fmt.Println
в строке (результат), я могу вывести на экран любое количество результатов. Как я могу добавить это в структуру API, а затем мне нужна структура, преобразованная в данные JSON. Есть ли способ добавить эти строковые данные в преобразованную структуру API JSON?
string(result)
выглядит с одним и несколькими результатами? - person Verran   schedule 18.04.2018