2016-11-13 2 views
3

У меня есть объект JSON, что-то вроде этого:распаковать JSON с неизвестным именем поля

{ 
    "randomstring": { 
     "everything": "here", 
     "is": "known" 
    } 
} 

В основном все внутри объекта randomstring известно, я могу смоделировать это, но randomstring сама является случайным. Я знаю, что это будет, но каждый раз это будет по-другому. В основном все данные, которые мне нужны, находятся в объекте randomstring. Как я могу разобрать этот JSON для получения данных?

+3

распаковать в 'карте [строка] SomeParticularStructType'. – twotwotwo

+3

Возможный дубликат http://stackoverflow.com/questions/35558039/how-to-unmarshal-json-with-dynamic-key-which-cant-be-captured-as-a-json-in-st и http: //stackoverflow.com/questions/15817720/golang-struct-for-json-with-arbitrary-keys –

ответ

6

Используйте карту, где тип ключа string и тип значения является структурой с полями, которые вы хотите, как в this example on the Playground и ниже:

package main 

import (
    "encoding/json" 
    "fmt" 
    "log" 
) 

type Item struct{ X int } 

var x = []byte(`{ 
    "zbqnx": {"x": 3} 
}`) 

func main() { 
    m := map[string]Item{} 
    err := json.Unmarshal(x, &m) 
    if err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(m) 
} 
Смежные вопросы