2016-04-30 10 views
0

Der BeispielcodeWie json Strings in einer Struktur von json docs mit von Abstellungs in golang

package main 

import (
    "encoding/json" 
    "fmt" 
) 

type ClassRoom struct { 
    Student struct { 
     Name string 
     /* 
      Address struct { 
       City string 
       Zip int 
      } `json:"address"` 
     */ 
     Address []string `json:"address"` //here, Want to get json string 
     Age  int  `json:"age"` 
    } `json:"student"` 
    ClassCode int `json:"code"` 
} 

func main() { 
    jsonDocs := `[ 
    {"student":{"name":"jss","address":{"City":"Seoul","Zip":54},"Age":28},"ClassCode":1234}]` 

    var node []ClassRoom 

    json.Unmarshal([]byte(jsonDocs), &node) 
    fmt.Println(node) 
} 

Ich möchte Adreßvariable von JSON-String-Typ (wie {"City":"Seoul"....}) zu erhalten.

Antwort

0

Sie benötigen json.RawMessage statt []string, beispielsweise zu verwenden:

type ClassRoom struct { 
    Student struct { 
     Name string 
     Address json.RawMessage `json:"address"` //here, Want to get json string 
     Age  int    `json:"age"` 
    } `json:"student"` 
    ClassCode int `json:"code"` 
} 

func main() { 
    jsonDocs := `[{"student":{"name":"jss","address":{"City":"Seoul","Zip":54},"Age":28},"ClassCode":1234}]` 
    var node []ClassRoom 

    json.Unmarshal([]byte(jsonDocs), &node) 
    fmt.Printf("%s\n", node[0].Student.Address) 

    var addr struct { 
     City string 
     Zip int 
    } 
    json.Unmarshal(node[0].Student.Address, &addr) 
    fmt.Printf("%+v", addr) 
} 

playground

+0

Thank You !!!^_^ –

+0

@ J.soo, wenn meine Antwort geholfen hat, können Sie es auswählen, indem Sie auf das Häkchen klicken :) – OneOfOne