By unmarshalling json to
'map[string]interface{}' you can work with generic json.
For example, json string
{"FirstName":"Krishna","LastName":"Gurram","ID":123}
is equivalant to given byte array.
{123, 34, 70, 105, 114, 115,
116, 78, 97, 109, 101, 34, 58, 34, 75, 114, 105, 115, 104, 110, 97, 34, 44, 34,
76, 97, 115, 116, 78, 97, 109, 101, 34, 58, 34, 71, 117, 114, 114, 97, 109, 34,
44, 34, 73, 68, 34, 58, 49, 50, 51, 125}
Step 1: Define byte array
byteArray := []byte{123, 34,
70, 105, 114, 115, 116, 78, 97, 109, 101, 34, 58, 34, 75, 114, 105, 115, 104,
110, 97, 34, 44, 34, 76, 97, 115, 116, 78, 97, 109, 101, 34, 58, 34, 71, 117,
114, 114, 97, 109, 34, 44, 34, 73, 68, 34, 58, 49, 50, 51, 125}
Step 2: Unmarshal byteArray to generic map
var anyJSON
map[string]interface{}
err :=
json.Unmarshal(byteArray, &anyJSON)
Step 3: You can access the data with below
statements.
firstName :=
anyJSON["FirstName"].(string)
lastName :=
anyJSON["LastName"].(string)
ID := int(anyJSON["ID"].(float64))
Find the below working
application.
App.go
package main import ( "encoding/json" "fmt" ) func main() { //Step 1: Define byte array byteArray := []byte{123, 34, 70, 105, 114, 115, 116, 78, 97, 109, 101, 34, 58, 34, 75, 114, 105, 115, 104, 110, 97, 34, 44, 34, 76, 97, 115, 116, 78, 97, 109, 101, 34, 58, 34, 71, 117, 114, 114, 97, 109, 34, 44, 34, 73, 68, 34, 58, 49, 50, 51, 125} //Step 2: Unmarshal byteArray to generic map var anyJSON map[string]interface{} err := json.Unmarshal(byteArray, &anyJSON) if err != nil { fmt.Println("Can;t unmarshal the byte array") return } firstName := anyJSON["FirstName"].(string) lastName := anyJSON["LastName"].(string) ID := int(anyJSON["ID"].(float64)) fmt.Println(anyJSON) fmt.Println("FirstName : ", firstName) fmt.Println("LastName : ", lastName) fmt.Println("ID: ", ID) }
Output
map[FirstName:Krishna
LastName:Gurram ID:123]
FirstName : Krishna
LastName : Gurram
ID: 123
No comments:
Post a Comment