Обработка данных ответа в Struc - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в GO, и я работаю над проблемой, которую не могу осмыслить:

Я делаю GET-запрос против цели и получаю JSON ответ, аналогичный приведенному ниже:

{
   "data":[
      {
         "def":{
            "key":[
               {
                  "id":84,
                  "name":"T1"
               },
               {
                  "id":19,
                  "name":"T2"
               }
            ]
         },
         "id":2,
         "Name":"Test 1"
      },
      {
         "def":{
            "key":[
               {
                  "id":14,
                  "name":"T3"
               },
               {
                  "id":2,
                  "name":"T4"
               }
            ]
         },
         "id":3,
         "Name":"Test 2"
      }
   ]
}

Как я могу взять этот resp.Body и сохранить его таким образом, чтобы я мог начать работать с данными?

В Python Я мог бы легко сделать что-то вроде data = resp.json()['data'].

Могу ли я сделать что-то подобное в структуре определения?

var output Definitions 
json.Unmarshal([]byte(resp.Body), &output)

1 Ответ

0 голосов
/ 04 августа 2020

Хотя это не рекомендуется, вы можете демаршалировать произвольные JSON данные в interface{}, а затем утверждать это в map[string]interface{}:

func main() {
    input := []byte(inputJSON)
    var f interface{}
    _ = json.Unmarshal(input, &f)
    JSONmap := f.(map[string]interface{})

    fmt.Println(JSONmap["data"])
}

Вывод:

$ go run main.go
[map[Name:Test 1 def:map[key:[map[id:84 name:T1] map[id:19 name:T2]]] id:2] map[Name:Test 2 def:map[key:[map[id:14 name:T3] map[id:2 name:T4]]] id:3]]

Вы можете найти живой пример здесь: https://play.golang.org/p/vg-9_KgfJXx

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