2014-11-20 3 views
1

Я пытаюсь прочитать файл JSON, код, который делает это имеет что-то вроде нижеПреобразовать интерфейс {} для отображения

var configurations map[string]interface{} 

func GetConfigMap(name string) interface{} { 
    valueMap := configurations[name] 
    return valueMap.(map[string]interface{}) 
} 

И я пытаюсь читать карту, как показано ниже,

glossary := jsonreader.GetConfigMap("glossary") 
fmt.Println(glossary["GlossDiv"]) 

структура JSON, как показано ниже,

{ "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

Я получаю исключение, которое говорит -

invalid operation: glossary["GlossDiv"] (type interface {} does not support indexing) 

Как это сделать?

ответ

1

Я не уверен, что вы пытаетесь сделать на основе вашего вопроса, но не можете ли вы просто изменить возвращаемый тип функции?

func GetConfigMap(name string) map[string]interface{} { 
    valueMap := configurations[name] 
    return valueMap.(map[string]interface{}) 
} 
+0

Да, позвольте мне попробовать это –

+0

Вы можете увидеть в примере, который я отправил, изменить тип возвращаемого GetConfigMap от интерфейса {} для отображения [строка] интерфейс {} позволит вам делать то, что вы хотите. – Logiraptor

Смежные вопросы