#json #go
#json #Вперед
Вопрос:
Я извлекаю subreddit и получаю его в качестве ответа JSON.
Проблема в том, что возврат довольно большой, с большим количеством полей, но я просто хочу некоторые из них.
Структура выглядит примерно так:
data.children.data.fields
Children — это массив, поэтому я не могу получить к нему такой доступ, я полагаю, но это всего лишь пример.
Я вставил JSON в QuickType, чтобы посмотреть, что он мне возвращает, структуры большие.
Итак, есть ли способ получить только те поля, которые я хочу, используя json.Unmarshal?
Надеюсь, кто-нибудь сможет мне помочь, заранее спасибо!
Комментарии:
1. Вы можете определить структуру, структура которой соответствует структуре полей, которые вы хотите, вам не нужно определять все поля только потому, что они есть в json, определите только те, которые вам нужны, просто убедитесь, что они совпадают по структуре и типу.
2. Хорошо, я собираюсь попробовать это
3. Я не знал о Quicktype — это слишком круто!
Ответ №1:
Вы можете использовать структуру с полями, которые вам только нужны. Посмотрите на пример ниже
package main
import (
"encoding/json"
"fmt"
)
type Test struct {
Field1 int `json:"field1"`
Field2 string `json:"field2"`
}
func main() {
jsonString := `{
"field1": 1,
"field2": "test field 2",
"field3": "test field 3"
}`
t := Test{}
err := json.Unmarshal([]byte(jsonString), amp;t)
if err != nil {
fmt.Println(err)
}
fmt.Println("n", t)
}