Довольно JSON получен из ответа в GoLang - PullRequest
0 голосов
/ 10 октября 2018

Я получаю JSON как GET-ответ от конечной точки

response, _ := http.Get("https://website-returning-json-value.com")
data, _ := ioutil.ReadAll(response.Body)
w.Write(data)

Он возвращает мне значение JSON, которое в порядке, но очень уродливо (без отступов и т. Д.).Я хотел бы сделать это красиво.Я читал, что есть функция util, например MarshalIndent, которая выполняет эту работу, но она работает для объекта JSON (?), А функция ReadAll возвращает байт [], поэтому она не работает.Я прочитал документацию относительно пакета encoding / json, но информации много, и я немного застрял / запутался.

Насколько я понимаю, это должно быть сделано, я должен получить [] байт через функцию ReadAll-> преобразовать его в JSON -> предварительно преобразовать -> снова повернуть в [] байт.

1 Ответ

0 голосов
/ 10 октября 2018

Для этой цели есть json.Indent().Пример использования:

src := []byte(`{"foo":"bar","x":1}`)

dst := &bytes.Buffer{}
if err := json.Indent(dst, src, "", "  "); err != nil {
    panic(err)
}

fmt.Println(dst.String())

Вывод (попробуйте на Go Playground ):

{
  "foo": "bar",
  "x": 1
}

Но отступы только для человеческих глаз, они несут то же самоеинформация и библиотеки не нуждаются в JSON с отступом.

См. также: Существует ли оболочка jq для golang, которая может выдавать читаемый человеком JSON-вывод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...