Нужно ли мне определять точно такую же структуру JSON, чтобы использовать ее с json.Unmarshal?

#json #go

#json #Вперед

Вопрос:

Я извлекаю subreddit и получаю его в качестве ответа JSON.

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

Структура выглядит примерно так:

data.children.data.fields

Children — это массив, поэтому я не могу получить к нему такой доступ, я полагаю, но это всего лишь пример.

Я вставил JSON в QuickType, чтобы посмотреть, что он мне возвращает, структуры большие.

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)
}
  

https://play.golang.org/p/qFLXBiU-fMX