Создайте простую структуру, чтобы демонтировать JSON, который поступает в пакетном режиме.Таким образом, каждая партия json отправляется в объект json.Затем создайте фрагмент структур, чтобы добавить проанализированный json в фрагмент.Это добавит вам результат json all в виде фрагмента структуры.
package main
import (
"encoding/json"
"fmt"
)
type Ticker struct {
TickerSymbol string `json:"ticker_symbol"`
Sector string `json:"sector"`
Change float64 `json:"change"`
Price float64 `json:"price"`
}
var jsonBytes = []byte(`{"ticker_symbol":"PLM","sector":"FINANCIAL","change":-0.16,"price":19.99}`)
func main() {
var singleResult Ticker
var result []Ticker
if err := json.Unmarshal(jsonBytes, &singleResult); err != nil {
fmt.Println(err)
}
if len(result) == 0 {
result = append(result, singleResult)
}
fmt.Printf("%+v", result)
}
Отредактировано:
Если данные поступают в виде пакета, который содержит объекты json, добавленные друг к другучем вы можете перейти к выражению регулярного выражения, чтобы заменить }
на },
, а затем обрезать самое правое ,
, чтобы создать действительный массив объектов json:
package main
import (
"fmt"
"regexp"
"strings"
)
type Ticker struct {
TickerSymbol string `json:"ticker_symbol"`
Sector string `json:"sector"`
Change float64 `json:"change"`
Price float64 `json:"price"`
}
var str = `{"ticker_symbol":"PLM","sector":"FINANCIAL","change":-0.16,"price":19.99}
{"ticker_symbol":"AZL","sector":"HEALTHCARE","change":-0.78,"price":16.51}
{"ticker_symbol":"IOP","sector":"TECHNOLOGY","change":-1.98,"price":121.88}
{"ticker_symbol":"VVY","sector":"HEALTHCARE","change":-0.56,"price":47.62}
{"ticker_symbol":"BFH","sector":"RETAIL","change":0.74,"price":16.61}
{"ticker_symbol":"WAS","sector":"RETAIL","change":-0.6,"price":16.72}`
func main() {
r := regexp.MustCompile("}")
output := strings.TrimRight(r.ReplaceAllString(str, "},"), ",")
output = fmt.Sprintf("[%s]", output)
fmt.Println(output)
}
Использование r := regexp.MustCompile("}")
поможет вамне беспокоиться о пробелах между }{
, которые могут помешать замене строки.Поэтому просто замените }
на },
и затем обрежьте вправо.
Также причина, по которой я использую MustCompile:
При создании констант с регулярными выражениями вы можете использовать MustCompileВариант компиляции.Простой компиляция не будет работать для констант, потому что он имеет 2 возвращаемых значения.
Полный рабочий код с анализом json на Перейти на игровую площадку